2017-04-13 116 views
2

我有一個接口類,但我希望所有的派生類來實現虛擬析構函數:正確放置在默認的純虛析構函數C++ 11

// Interface.h 
class Interface { 
    virtual ~Interface() = 0; 
}; 

Interface::~Interface() = default; 

的問題是,在這種情況下,我有一個鏈接器錯誤,因爲重複的符號。

我可以將定義放在.cpp文件中,但我想知道是否有更優雅的解決方案?

+4

也許'inline Interface ::〜Interface()= default;'? –

+1

函數(析構函數)不能抽象,並且同時具有實現(默認)。 –

+4

@AndrewKashpur,是的它可以:http://stackoverflow.com/questions/37777606/c11-interface-pure-virtual-destructor – Alex

回答