Problem const int Initialisierung
-
Hallo zusammen,
ich habe eine kurze Anfängerfrage. Ich deklariere als private ein const int. Diese Variable soll der Wert 20 zugewiesen werden. Das Problem ist, dass eine Wertzuweisung in der Headerdatei mit der Klassendeklaration nicht möglich ist, doch ich kann den Wert auch nicht im Konstruktor zuweisen, da sonst die verständliche Fehlermeldung kommt, dass "const Ausdrücke nicht modifiziert werden können".Wo weise ich meinem const Ausdruck seinen konstanten Wert zu?
Vielen Dank
lg, freakC++
-
Initialisierungsliste:
class Test { const int var; public: Test() : var(20) {} };
-
freakC++ schrieb:
...Ich deklariere als private ein const int...
Das Problem ist, dass eine Wertzuweisung in der Headerdatei mit der Klassendeklaration nicht möglich ist, doch ich kann den Wert auch nicht im Konstruktor zuweisen, da sonst die verständliche Fehlermeldung kommt, dass "const Ausdrücke nicht modifiziert werden können".In dem du die Initialisierungsliste und nicht den Konstruktorrumpf verwendest. Ersteres dient der Initialisierung, letzteres ist eine Zuweisung. Siehe hierzu auch den FAQ-Eintrag.
-
Ich muss zugeben, dass ich diese Syntax mit dem Doppelpunkt bis jetzt nur von der Vererbung kenne. Da muss ich wohl noch ein bisschen weiter in meinen schlauen Büchern lesen
.Könnt ihr mir trotzdem schonmal kurz sagen, was hier der Doppelpunkt macht?
Danke für eure Antworten.
lg, freakC++
-
Elementinitialisierung. Initialisiert die Variable gleich bei Erstellung mit den übergebenen Werten. Erspart dir eine unnötige Defaultkonstruktion bzw. ist die einzige Möglichkeit Objekte zu initialisieren, die keinen Default-Konstruktor haben.