Statische Attribute
-
Hallo
ich hab ein Problem mit einem statischen Attribut:class testklasse { private: static testklasse* Anker; int a; int b; } testklasse* testklasse:: Anker;Mein Problem besteht darin im Objekt Anker die integer a und b zu initialisieren.
Vielen Dank für die Antworten!!!!
-
Sind ja auch private.
-
naja, da würde ich doch einfach einen Konstruktor verwenden

zumal a und b keine statischen elemente sind... BTW die Definiton des Ankers muss in einer cpp erfolgen.//xxx.h class testklasse { public: testklasse() : a(0), b(0) {} private: static testklasse* Anker; int a; int b; }; //xxx.cpp testklasse* testklasse:: Anker;
-
Danke für die Antwort!
Ich habe natürlich einen Konstruktor.
Dieser wird aber nicht aufgerufen um den Anker zu erzeugen.Das Problem ist also, das der Anker nicht existiert.
-
Ist ja auch nur ein Pointer, da wird gar nichts erzeugt.
-
philipp1000 schrieb:
Ich habe natürlich einen Konstruktor.
Dieser wird aber nicht aufgerufen um den Anker zu erzeugen.Dann zeig doch mal den Konstruktor und die Stelle, an der der Anker erzeugt wird.
-
Der Konstruktor:
testklasse::testklasse() { printf("KONSTRUKTOR\n"); //zur kontrolle a = 0; b = 0; return; };
-
wie sonst möchtest du anker erzeugen?
es ist ja lediglich ein Pointer und bisher ist der bestenfalls auf NULL gesetzt, aber i.d.R. zeigt er momentan bei dir auf einen ungültigen Speicherbereich...testklasse* testklasse::Anker = new testklasse();dann wuppt das auch
-
testklasse::testklasse() { std::cout<< "KONSTRUKTOR" << std::endl; //C++ - Stil a = 0; b = 0; return; //<- brauchst du nicht... er springt am ende des scopes automatisch zurück }
-
philipp1000 schrieb:
Das Problem ist also, das der Anker nicht existiert.
richtig. und im konstruktor verwende initialisierungslisten:
testklasse::testklasse() : a(0), b(0) { std::cout<< "KONSTRUKTOR" << std::endl; }
-
Danke!
Das war der Fehler!Ich bin mit Zeiger und Objekten durcheinander gekommen.
Viele Gruße!!