Const-Elemte und enum in klasse, wir realisierbar
-
Hallo,
wie kann ich sowas realisieren?
<<pseudocode>>class test { public: test():Names[0]("open"),Names[1]("closed"),Style(open){} string& ReturnState() { return Names[Style]; } private: const string Names[2]; //wie kann ich dies initialisieren? enum styles{open,closed} Style; //kann ich das enum so verwenden (da im provate bereich)? };
-
Hallo
mach Names statisch
class test { private : enum styles{open,closed} Style; // private schon, aber deklariert werden muß es vor dem ersten Gebrauch public: test():Style(open){} string& ReturnState() { return Names[Style]; } private: static const string Names[2]; //wie kann ich dies initialisieren? }; // Implementation const string test::Names[2] = {"open", "closed"};bis bald
akari
-
@akari
Zwei Anmerkungen:
a) Es gibt keinen technischen Grund dafür die Deklaration von styles an den Anfang der Klasse zu schieben.
b) ReturnState muss entweder den String "by-value" liefern oder aber als Referenz-auf-const.
-
Hallo
@CStoll
a : stimmt, hätte nicht gedacht das der Compiler da nicht seine übliche strenge "von-oben-nach-unten" Regel anwendet
b : stimmt auch, hab ich gar nicht drauf geachtetbis bald
akari
-
akari schrieb:
Hume

akari schrieb:
a : stimmt, hätte nicht gedacht das der Compiler da nicht seine übliche strenge "von-oben-nach-unten" Regel anwendet
Innerhalb einer Klassendefinition betrachtet der Compiler immer die gesamte Klasse.