我有一个继承自抽象基类的类.
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();
};
Run Code Online (Sandbox Code Playgroud)
在另一个类的方法中,CStateTitle被动态分配到CStateBase指针中.但是,如果我使用该指针尝试访问变量int m_iR,编译器会在CStateBase中查找变量,从而产生错误.如果我可以在基类中声明virtual int m_iR,我认为它可以正常工作,但由于某种原因,它不会让我声明虚拟数据成员.推荐解决此问题的方法是什么?谢谢你的帮助.
您应该从基类公开继承:
class CStateTitle: public CStateBase
Run Code Online (Sandbox Code Playgroud)
否则CStateTitle 不是 CStateBase从编译器的角度来看,因此你不能通过指针多态访问CStateTitle对象CStateBase.
您不能拥有虚拟数据成员,只能拥有C++中的虚拟方法.因此,解决方法可能是为您的数据成员声明虚拟访问器方法.