[conception] empêcher les modifications d'un objets
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:
Code:
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
}; |
et C, qui doit avoir un pointeur sur B::m_A, est défini ainsi:
Code:
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;
}; |
Pour résumé, nous avons:
- 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 :P