我在一个我正在覆盖的虚拟私有方法中调用受保护方法(非虚拟)时出现链接错误(未解析的外部符号)。通过将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(会导致循环引用)。但是注意这个循环的东西不是问题,我创建了一个虚拟方法只是为了确认,它也会产生链接错误。 我很傻。