Bonjour,
J'ai une classe A qui a différent objets dont un objet de classe B.
J'ai besoin d'appeler une méthode de A dans l'objet m_b.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class A{ protected: B * m_b; ... public: void methode(); } };
J'ai donc passé le pointeur this au constructeur de B.
L'objet m_b était créé ainsi : m_b = new B(this) (dans A).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class A; class B{ public: B(A * a){ m_a = a;} protected: A * m_a; }; }
Tout marchait bien jusqu'à ce que j'ai eu besoin de passer le pointeur de A au sein d'un objet C contenu dans B. J'ai utilisé la même méthode que précédemment mais voici le genre d'erreur de compilation qu'il m'affichait :
In file included from main_window.hh:20, //A
from treeviewpopup.h:24, //C
from treeviewpopup.cpp:12:
onrequestbox.h:40: // B
erreur: «TreeviewPopup» does not name a type
En recherchant sur le net, je me suis aperçu que le passage par référence étant plus approprié.
J'ai donc remanié le code ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class A{ protected: B * m_b; ... public: void methode(){ m_b = new B(*this);}; } };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class A; class B{ public: B(A& a):m_a(&a), m_c(a){}; protected: A * m_a; C m_c; }; }Le compilateur me sort toujours les mêmes erreurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class A; class C{ public: C(A& a):m_a(a){}; protected: A * m_a; }; }
Je suis en perdu, comment faire ?
Partager