Konstante Privat-Elemente
-
Ich komm nicht dahinter:
class A { const float version; public: A(); }; A::A() { version = 0.1F; }Warum funktioniert das nicht?
Der Compiler meint immer, version muss Initialisiert werden.
-
class A { const float version; public: A(); }; A::A() : version(0.1f) {}
-
aha,danke
-
wenn es für alle instanzen gleich sein soll, sollte es natürlich static sein:
class A { static const float version; public: A(); }; const float A::version = 0.1f; A::A() {}
-
wenn du static const verwendest, kannst du die zuweisung auch gleich bei der deklaraktion machen
class A { static const float version = 0.1f;das ding existiert im gesamten programm nur exakt einmal und kann nie verändert werden, das kann der compiler irgendwo hinstecken und vergessen.
-
statisch schrieb:
wenn du static const verwendest, kannst du die zuweisung auch gleich bei der deklaraktion machen
class A { static const float version = 0.1f;das ding existiert im gesamten programm nur exakt einmal und kann nie verändert werden, das kann der compiler irgendwo hinstecken und vergessen.
da es sich um keine integrale konstante handelt, darf sie nicht innerhalb der klassendefinion initialisiert werden
class A { static const float version; }; const float A::version = 0.1f;