NoRulez
10-04-2008, 18:20
hey @all,
ich habe mir ein NodeSystem gebaut, in dem ich bei jeder Node 1 Parent habe, jedoch jeder Node n childs haben kann.
Nun zu meinem Problem... Entweder ich stehe gerade gewaltig am Schlauch oder der Compiler hat ein Problem.
Ich lösche irgendeinen Node* mit "delete node".
Im Destructor der Node habe ich folgendes:
Node::~Node() {
for(std::vector<Node*>::iterator it = this->lchilds.begin(); it != this->lchilds.end(); ++it) {
if((*it) != NULL) {
delete &(*it);
(*it) = NULL;
it = this->lchilds.erase((*it));
}
}
}
Und genau hier hauts mich auf, da dieses "(*it) = NULL" nicht bewirkt das der Pointer auf NULL gesetzt wird und somit in this if anweisung geht und versucht das ganze nochmals zu löschen.
Habe ich da grundlegend was falsches gedacht? Achja, zukünftig hatte ich statt dem std::vector eine std::list. Jedoch liefert mir die std::list nur einen const_iterator zurück.
Kann mir bitte jemand bei diesem Problem helfen?
Vielen Dank im Voraus
LG NoRulez
P.S.: Blöde Frage, aber was muss ich in einem Destructor noch alles zerstören? Habe noch Elemente vom Typ time_t, std::string und int's
ich habe mir ein NodeSystem gebaut, in dem ich bei jeder Node 1 Parent habe, jedoch jeder Node n childs haben kann.
Nun zu meinem Problem... Entweder ich stehe gerade gewaltig am Schlauch oder der Compiler hat ein Problem.
Ich lösche irgendeinen Node* mit "delete node".
Im Destructor der Node habe ich folgendes:
Node::~Node() {
for(std::vector<Node*>::iterator it = this->lchilds.begin(); it != this->lchilds.end(); ++it) {
if((*it) != NULL) {
delete &(*it);
(*it) = NULL;
it = this->lchilds.erase((*it));
}
}
}
Und genau hier hauts mich auf, da dieses "(*it) = NULL" nicht bewirkt das der Pointer auf NULL gesetzt wird und somit in this if anweisung geht und versucht das ganze nochmals zu löschen.
Habe ich da grundlegend was falsches gedacht? Achja, zukünftig hatte ich statt dem std::vector eine std::list. Jedoch liefert mir die std::list nur einen const_iterator zurück.
Kann mir bitte jemand bei diesem Problem helfen?
Vielen Dank im Voraus
LG NoRulez
P.S.: Blöde Frage, aber was muss ich in einem Destructor noch alles zerstören? Habe noch Elemente vom Typ time_t, std::string und int's