Problème d'héritage d'une méthode protégée
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 :
Code:
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;
}; |
et ensuite je déclare une classe dérivée :
Code:
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;
}; |
dans CObjetComplexe je voudrais pouvoir indiquer à l'objet ajouté qui est son parent :
Code:
1 2 3 4 5
| void CObjetComplexe::AddObjet(CObject* pObjet)
{
m_arObjects.Add(pObjet);
pObjet->SetParent(this);
} |
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
auriez-vous une solution pour que SetParent soit une méthode accessible par CObject et ses héritiers mais pas par les autres ?