2017-09-27 1 views
0
/*In header file */ 
class abc{ 
public: 
static bool do_something(); 

} 

/*In other file */ 
static bool isvalid=false; //global variable 

bool abc::do_something() 
{ 
return isValid; 
} 

ist es kompilieren. Ich möchte wissen, ist es richtig zu verwenden?Kann eine statische Funktion eines Klassenzugriffs globalen statischen Variablen?

+1

Es ist legal C++. Ob es "richtig" ist oder nicht, hängt davon ab, was man als richtig betrachtet, wenn man fragt. – StoryTeller

+0

Es ist legal zu verwenden, sicherlich. –

+2

Ja, es ist technisch korrekt, aber wahrscheinlich schlechtes Design. – alain

Antwort

0

Ja, es ist richtig - es wird kein Symbol für isvalid geben, und andere Dateien werden es nicht sehen können. Sie können den aktuellen Wert durch Aufruf von abc::do_something()

lesen. Die Elementfunktion muss nicht statisch sein. Alle Instanzen in der Lage, den gleichen aktuellen Wert von isValid

Der normale Weg zu verstecken Daten in C++ zurückzukehren ist es privat und statisch in der Klasse zu machen ...

Header-Datei

class abc{ 
    static bool isValid; // can be seen, does not use space in an instance 
public: 
    static bool do_something(); 

} 


/*In other file */ 
bool abc::isvalid=false; //global variable 

bool abc::do_something() 
{ 
    return isValid; 
} 
Verwandte Themen