Remarque: J'hésitais à poser cette question dans le même thread que celui sur le mot clé const, mais je ne pense pas que ce soit la même problématique.
Alors voilà ma question:
J'ai 3 classes, A, B et C. A est quelconque. B est définie ainsi:
et C, qui doit avoir un pointeur sur B::m_A, est défini ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class B { public: B():m_A(new A){}; //le constructeur de B créé une instance de A protected: A m_A; //l'instance de A appartient à B };
Pour résumé, nous avons:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class C { public: C(A* pA):m_pA(pA){} // le constructeur de C demande un pointeur sur A private: A* m_pA; };
- Une classe B qui possède une instance de A: c'est B qui instancie A et si B est détruit, cette instance de A est détruite également.
- Une classe C qui possède un pointeur (référence??) sur l'instance de A créée par B.
Questions:
1/ Je voudrais que C ne puisse pas modifier l'instance de A dont il possède un pointeur. Comment faire?
2/ Comment éviter les erreurs possibles dûes au fait que si je détruit B, le pointeur C::m_pA ne sera plus valide?
J'espère avoir été suffisamment clair. Si ce n'est pas le cas, n'hésitez pas à me demander des précisions.
Merci![]()
Partager