one.cpp
extern PureVirtualBase &instance;
void foo()
{
instance.click();
}
two.cpp
Derived instance;
我可以在其他文件中初始化引用吗?我使用该代码获得conflicting declaration
。
答案 0 :(得分:4)
在cpp文件中:
static Derived instance_object;
PureVirtualBase &instance = instance_object;
这可确保instance
的类型完全匹配 - 即PureVirtual&
答案 1 :(得分:3)
实例的定义和声明的类型应完全匹配。看起来您需要getInstance()类型的函数来执行以下操作:
Base& getInstance()
{
return instance;
}