Salut j'ai codé une fonction pour recherché un composant dans un arbre :
Mais j'ai un problème.
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Node* Node::find(LightComponent* component) { std::cout<<"component : "<<this->component<<" component : "<<component<<std::endl; if (this->component == component) return this; std::cout<<"size : "<<nodes.size()<<std::endl; for (unsigned int i = 0; i < nodes.size(); i++) { return nodes[i]->find(component); } }
J'ai ajouté deux noeud au noeud racine et voilà ce que ça me fait :
-Appel de la méthode find sur le noeud racine en lui passant le composant du deuxième noeud enfant.
-Test si les composant sous les même. (non le composant du noeud racine n'est pas celui du deuxième noeud enfant.
-Entrée dans la boucle for. (size vaut deux car il y a deux noeud enfants.
-Appel récursif de find sur le premier noeuds enfant.
-Test si les composants ne sont pas les même. (non le composant du premier noeud enfant n'est pas celui du deuxième noeud enfant.
Je m'attendais à ce qu'il sorte de la fonction récursive et retourne dans la boucle for pour itérer sur le noeud suivant.
Mais ce n'est pas ce qui se passe!!!
Il sort de la boucle for et puis de la fonction en retournant null et ça plante!
Pourquoi il ne continue pas dans ma boucle for ?
Partager