多态性:访问继承的类变量

kay*_*kun 0 c++

我有一个继承自抽象基类的类.

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,我认为它可以正常工作,但由于某种原因,它不会让我声明虚拟数据成员.推荐解决此问题的方法是什么?谢谢你的帮助.

Pét*_*rök 5

您应该从基类公开继承:

class CStateTitle: public CStateBase
Run Code Online (Sandbox Code Playgroud)

否则CStateTitle 不是 CStateBase从编译器的角度来看,因此你不能通过指针多态访问CStateTitle对象CStateBase.

您不能拥有虚拟数据成员,只能拥有C++中的虚拟方法.因此,解决方法可能是为您的数据成员声明虚拟访问器方法.