Implémentation d'une classe C++ pour un nœud, mais je reçois toujours une erreur lors de la suppression d'un nœud.Déplacement en C++ des enfants d'un nœud supprimé vers son parent dans un arbre
Le algorithim général va comme ceci:
- mis la PARENT_ de l'enfant à PARENT_
- ajouter l'enfant aux enfants du parent
- retirer l'enfant des enfants de ce noeud
Voici mon fichier de classe:
template <typename E>
class TNode{
...
bool remove(){
if ((parent_==NULL) && (children_.size()>0)){
cout << "can't remove the root if it has children\n";
return false;
}
else{
parent_->children_.erase(std::remove(parent_->children_.begin(), parent_->children_.end(), this), parent_->children_.end());
for (int i=children_.size()-1;i>=0; i--){
//my error is happening here
parent_ = parent_ -> children_;
this = children_ -> this;
parent_ = parent_ -> this;
}
//delete (deallocate memory of) this node
delete this;
return true;
}
}
friend class gTree<E>;
private:
E data_;
gTNode<E>* parent_;
std::vector<gTNode<E>*> children_;
};
Quelqu'un peut-il me diriger dans la bonne direction?
EDIT L'erreur est la suivante:
gTree.h: In member function ‘bool gTNode<E>::remove()’:
gTree.h:50:29: error: expected unqualified-id before ‘this’
this = children_ -> this;
^
gTree.h:50:29: error: expected ‘;’ before ‘this’
gTree.h:51:30: error: expected unqualified-id before ‘this’
parent_ = parent_ -> this;
^
gTree.h:51:30: error: expected ‘;’ before ‘this’
voir les modifications ci-dessus – nickoba