2015-09-02 131 views
0

one.cpp外部引用初始化

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

two.cpp

Derived instance; 

我可以初始化在其他文件中引用?使用該代碼獲得conflicting declaration

+0

您可以在其他文件中初始化,但你必須使用完全相同的類型。 – Hcorg

回答

3

在CPP文件:

static Derived instance_object; 
PureVirtualBase &instance = instance_object; 

這可以確保instance正好匹配的類型 - 即PureVirtual&

+0

作品!順便說一句,我可以寫'PureVirtualBase&實例'沒有任何賦值,它編譯爲0,但它將在運行時爲空:0。 – Artem

+0

你是對的@Hcorg。感謝編輯 –

3

類型的定義和實例的聲明應該完全匹配。這似乎是你需要的getInstance()種功能你正在嘗試做的事:

Base& getInstance() 
{ 
    return instance; 
}