我正在覆盖的虚拟私有方法中调用受保护方法(非虚拟)的链接错误(未解析的外部符号)。链接错误通过将保护更改为公共解决?我没有找到任何相关信息。事情是这样的:
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 的包含(会导致循环引用)。但请注意这个循环的东西不是问题,我创建了一个虚拟方法只是为了确认,它也会创建链接错误。我一无所知。