外部参考初始化

时间:2015-09-02 14:43:42

标签: c++ reference

one.cpp

extern PureVirtualBase &instance;
void foo()
{
    instance.click();
}

two.cpp

Derived instance;

我可以在其他文件中初始化引用吗?我使用该代码获得conflicting declaration

2 个答案:

答案 0 :(得分:4)

在cpp文件中:

static Derived instance_object;
PureVirtualBase &instance = instance_object;

这可确保instance的类型完全匹配 - 即PureVirtual&

答案 1 :(得分:3)

实例的定义和声明的类型应完全匹配。看起来您需要getInstance()类型的函数来执行以下操作:

Base& getInstance() 
{
    return instance;
}