你可以在覆盖私有虚拟内部调用受保护的方法吗?

时间:2013-05-24 06:14:15

标签: c++ methods virtual private protected

我在一个我正在覆盖的虚拟私有方法中调用受保护方法(非虚拟)时出现链接错误(未解析的外部符号)。通过将protected更改为public来解决链接错误? 我没有找到任何相关信息。 事情是这样的:

class Base{
protected:
  void Finish();

private:          
  virtual void VOnUpdate()=0;
};

class Derived: public Base{
private:          
  virtual void VOnUpdate(){
    Finish();// unresolved Finish() being called
  }
};

通过一些测试,我得出结论,如果我在头文件(声明Base)上定义Finish(),问题也解决了。但我不想也不能这样做,因为Finish需要包含Base的include(会导致循环引用)。但是注意这个循环的东西不是问题,我创建了一个虚拟方法只是为了确认,它也会产生链接错误。 我很傻。

0 个答案:

没有答案