0

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

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 的包含(会导致循环引用)。但请注意这个循环的东西不是问题,我创建了一个虚拟方法只是为了确认,它也会创建链接错误。我一无所知。

4

0 回答 0