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 :
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.
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
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); }
Est-ce que quelqu'un saurait comment arranger ça?
Partager