Bon, voilà.

J'ai une classe de base arbre_abstrait qui contient une méthode racine dont le type est noeud_abstrait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class arbre_abstrait
{
    public:
    //...
    noeud_abstrait& racine();
    //...
}
Je voudrai pouvoir changer le type de retour de cette méthode comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class arbre_concret
{
    public:
    //...
    noeud_concret& racine();
    //...
}
J'avais pensé utiliser des classes templates pour l'arbre_abstrait, l'arbre concret devenant alors juste un arbre_abstrait<noeud_concret> , mais comme chaque noeud possède une réference vers l'arbre qui le contient, j'arrive à une situation ou je défini un noeud en fonction de son arbre, lequel est défini en fonction de son noeud,lequel est défini en fonction de son arbre, lequel est défini en fonction de son noeud,...

Qqn a une idée?