2016-11-13 4 views
0

ich im Voraus leid bin, ob dies eine dumme oder Unsinn Frage, aber:C++ Zugriff auf statische Klassenmembervariablen, nicht Freund

Kann eine nicht konstante statische Klassenvariablen für eine Klasse von einer anderen Klasse verwendet werden ohne Freund oder Basis/abgeleitete Klassen zu verwenden? Die (abgekürzt) Situation ist:

class Decl { 
    public: 
      static string searchVal; 
      ... (other irrelevant stuff) 
}; 

class Conj { 
    public: 
     static string searchVal; 
     ... (other irrelevant stuff) 
}; 

Ich will nicht searchVal in beiden Klassen wiederholen, und wegen des Restes des Programms, ich bin nicht scharf auf mit Freund (aber ich werde, wenn es das ist einzige Option).

+0

Sie können das statische Element überall Zugriff mit 'Decl :: searchVal' – pat

Antwort

0

Da Ihre static Mitglieder public sind, können Ihre statischen Mitglieder unter Verwendung der Decl::searchVal bzw. Conj::searchVal auf Ihre statischen Definitionen zugreifen.

Zum Beispiel

class Decl 
{ 
    public: static string searchVal; 
}; 

class Conj 
{ 
    public: 
     static string searchVal; 
}; 

// within ANY function, including members of either class above 
// ... as long as both definitions above are visible to the compiler 

if (Conj::searchVal == Decl::searchVal) 
{ 
     // do something 
} 
Verwandte Themen