Klassenzeiger in Kontainern
-
Sers.
ich krieg immer nen Programmabsturz.
Die Sache ist die:
Ich hab Vektorenstd::vector<MyClass*>;Wenn ich dann aber in ein Element des Vektors schreiben will, stürzt das Programm ab.
Vermutlich ist der Zeiger ungültig. Wie muss ich das dann anstellen?
-
mit new initialisieren und mit delete später wieder löschen.
std::vector<MyClass*> v; MyClass* c = new MyClass(...); v.push_back(c); //hier könnte man auch direkt new MyClass reinpushen... ... //damit arbeiten for(std::vector<MyClass*>::iterator i = v.begin(); i != v.end(); i++) // für jedes element im container // -> löschen // mit *i greifst du auf den inhalt des iterators zu // in dem fall ein MyClass* zeiger { delete *i; }ungetestet.