Bonjour, je me permet de demander de l'aide pour un problème que je rencontre dans l'un de mes programmes
j'ai créé une classe de base, un objet général :
et ensuite je déclare une classe dérivée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class CObject { public: CUIObject(void):m_pParent(NULL) {} virtual ~CUIObject(void) {} protected: void SetParent(CUIObject* pParent) { m_pParent = pParent; } protected: CObject* m_pParent; };
dans CObjetComplexe je voudrais pouvoir indiquer à l'objet ajouté qui est son parent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class CObjetComplexe : public CObject { public: CObjetComplexe(void) {} virtual ~CObjetComplexe(void) {} void AddObjet(CObject* pObjet); protected: std::vector<CObject*> m_arObjects; };
mon problème est que je voudrais encapsuler la fonction SetParent dans CObject pour qu'elle ne soit pas accessible de l'extérieur mais dans AddObjet de CObjetComplexe j'ai une erreur en appelant SetParent si elle n'est pas publique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void CObjetComplexe::AddObjet(CObject* pObjet) { m_arObjects.Add(pObjet); pObjet->SetParent(this); }
auriez-vous une solution pour que SetParent soit une méthode accessible par CObject et ses héritiers mais pas par les autres ?
Partager