2017-04-13 118 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

回答