Protected/Private static Variablen?
-
Hallo Forum,
wie kann ich die static Variablen in diesem Beispiel protected/private machen? (Nur für den Setter zugänglich.)
Ich möchte die static Var nicht unbedingt innerhalb der Funktion aufbewahren.class ABCD { public: //protected: static std::string s_sAAAA; static void SetAAAA(const std::string &sAAAA) { s_sAAAA=sAAAA; } }; std::string ABCD::s_sAAAA=""; int main(int argc, char* argv[]) { ABCD::SetAAAA("a"); if (ABCD::s_sAAAA.length()>0) { printf("2"); } return 0; }
-
Und wo ist die Frage? Private static's kannst/musst du genauso deklarieren wie öffentliche, allerdings kommst du außerhalb der Member nicht mehr an die Variablen dran (d.h. die main() kann nicht mehr den Inhalt von ABCD::s_sAAAA auslesen).
-
Ähmm... einfach die Variable protected/private deklarieren und die Setter public machen...
class ABCD { protected: static std::string s_sAAAA; public: static void SetAAAA(const std::string &sAAAA) { s_sAAAA=sAAAA; } }; ...cu André
-
Die Fehlermeldung von asc Code ist:
error C2248: 's_sAAAA' : cannot access protected member declared in class 'ABCD'
-
martin_salo schrieb:
Die Fehlermeldung von asc Code ist:
error C2248: 's_sAAAA' : cannot access protected member declared in class 'ABCD'
int main(int argc, char* argv[]) { ABCD::SetAAAA("a"); if (ABCD::GetsAAAA().length() > 0) { printf("2"); } return 0; }Schreib dir einfach einen Getter der wie SetAAA arbeitet (nur das er halt die Variable zurückgibt).
-
Mein Fehler. Danke

-
Um nicht als Vollschuß zu gelten: Ich habe das BSP aus einem größeren Zusammenhang heraushgelöst:
class ABCD { protected: static std::string s_sAAAA; public: static void SetAAAA(const std::string &sAAAA) { s_sAAAA=sAAAA; } }; static void SetAAAA(const std::string &sAAAA) { s_sAAAA=sAAAA; // Diese ging nicht, weil ich eine Zeile höher den ABCD:: Prefix vergessen hatte. Deshalb dachte ich Statics dürften nur public sein. }