Bonjour,

Je suis en train de faire une petite librairie, dont la structure est assez simple :

1 classe de base avec pas mal de classes dérivées.

Typiquement chacune de ces classe est un noeud d'un arbre binaire.

J'ai une méthode définie sur ces classes qui me retourne un noeud, qui est fonction de cette méthode les deux noeuds "fils".

le problème est qu'il me semble perdre de l'information en cours de route (en gros j'ai bien un noeud au final, mais qui ne contient pas du tout les bonnes informations, mais la méthode marche sur les noeuds terminaux.

Voici ce à quoi ressemble mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
class noeud{
protected:
noeud *s1;
noeud *s2;
public:
virtual noeud MaMéthode(){
return F(s1->MaMéthode(),s2->MaMéthode();
}
};
 
class noeud_dérivé{
protected:
....
public
noeud MaMéthode(){
return G(s1->MaMéthode(),s2->MaMéthode();
};
Et donc en gros sur des noeuds pour lesquels s1 et s2 sont NULL ça marche, mais si le noeud n'est pas terminal j'obtiens un noeud qui donne n'importe quoi.

A priori le problème vient du fait que les noeuds créés par si->MaMéthode() sont des variables locales dans this->MaMéthode, j'ai essayé de faire en sorte qu'elle ne soient pas effacées en déclarant chaque noeud intermédiaire avec un mais rien n'y fait.

Quelqu'un aurait-il une manière de faire pour préserver l'existence des noeuds intermédiaires ?

Merci

--
Z.