Héritage : Arbres binaires
Bonjour à tous.
J'essaye d'implémenter deux arbres binaires, l'un en une liste, l'autre en un vecteur, ces derniers étant deux sous classes d'une classe abstraite.
Voici le code de ce qui pose problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
class Arbre2{
public:
class Elem{
public:
friend class Arbre2;
int info;
virtual const Elem& elemGauche(const Elem &)=0;
Elem();
};
virtual const Elem & filsGauche(const Elem &)=0; Arbre2();
//Arbre2(const Arbre2&); //~Arbre2();
private:
Elem* Rac;
};
class Arbre2L : public Arbre2{
public:
class ElemL : public Elem{
public:
friend class Arbre2L;
int info;
ElemL *fg,*fd,*pere;
ElemL(int,ElemL*,ElemL*);
};
const ElemL & filsGauche(const Elem &);
Arbre2L(); ~Arbre2L();
private:
ElemL* RacL;
void Cancel(ElemL*);
const ElemL& Copie(const ElemL &);
};
const Arbre2L::ElemL& Arbre2L::filsGauche(const Arbre2L::Elem& p){
return (*p.fg);
} |
Probleme : Pour respecter la convention d'héritage, je dois passer un const Elem & en paramètre de ma méthode filsGauche. Pour renvoyer le fils gauche, je dois idéalement faire un return(*p.fg). Cependant, p étant un Elem, *fg n'est pas défini et le compilateur ne va pas chercher automatiquement le *fg de ma classe ElemL.
Est-ce que quelqu'un saurait comment arranger ça?