Bonjour.
Je dois coder un arbre avec possibilité de l'afficher.
Pour cela j'ai une classe de base A et une classe dérivée B, par exemple :
Le problème quand je compile est le suivant :
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 class A { protected: int m_val; A * m_ptr; }; class B : public A { public: void draw(void) { A * ptr = m_ptr; ptr->m_val = 0; } };
C'est peut-être un problème de conception, mais j'aurai aimé garder quelque chose de simple et esthétique. Les solutions que j'envisage sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 foo.cpp: In member function void B::draw(): foo.cpp:6: error: int A::m_val is protected foo.cpp:16: error: within this context
(1) déclarer une fonction draw friend dans A (pas estéthique à mon goùt).
(2) Caster m_ptr en B* au lieu de A* dans la fonction doSmth (c'est pas sécurisé du tout).
(3) rendre les membres de A public et faire un heritage privé (problème suivant le nombre de niveau d'héritage et je perds les fonctions publiques de A).
(4) Faire des accesseurs aux membres protected de A (beaucoup de travail mais certaienemt le plus élégant)
Je vous consulte pour savoir si vous voyez une meilleure conception ou une meilleure solution.
Merci d'avance.
Partager