J'ai une classe héritée d'une classe de base abstraite.Polymorphisme: Accès à la variable de classe héritée
class CStateBase
{
friend class CApplication;
friend class CGraphics;
virtual int Update() =0;
};
class CStateTitle: private CStateBase
{
friend class CApplication;
friend class CGraphics;
CApplication *f_App;
int m_iR;
int Update();
CStateTitle(CApplication *App);
~CStateTitle();
};
Dans un procédé d'une autre classe, CStateTitle est allouée dynamiquement en un pointeur CStateBase. Cependant, si j'utilise ce pointeur pour essayer d'accéder à la variable int m_iR, le compilateur cherche la variable dans CStateBase et fait donc une erreur. Si je pouvais déclarer virtual int m_iR dans la classe de base, je penserais que cela fonctionnerait bien, mais pour une raison quelconque, il ne me laisse pas déclarer les membres de données virtuelles. Quelle est la méthode recommandée pour contourner ce problème? Merci pour toute aide.
Vous avez très probablement besoin d'un destructeur virtuel dans votre classe de base, voir par ex. Sutters [Virtualité] (http://www.gotw.ca/publications/mill18.htm). –
De quelle manière une variable membre non-virtuelle ordinaire ne résout-elle pas votre problème? –