在一行中声明并实现纯虚拟析构函数?

时间:2013-04-26 12:52:07

标签: c++ abstract-class virtual-destructor

我正在制作一个纯虚拟析构函数来强制一个类是抽象的,除了ctor之外不包含任何方法。我这样做只是一个标题实现

struct abstractSchema
{
    abstractSchema(...): ... { ... }
    virtual ~abstractSchema() = 0;    
};
inline abstractSchema::~abstractSchema(){}

是否有任何语法糖(非法)virtual ~abstractSchema(){} = 0;允许我在一行上声明和定义,而不是像上面的例子中那样拆分定义和实现?

2 个答案:

答案 0 :(得分:3)

尽可能接近:

struct abstractSchema
{
    virtual ~abstractSchema(){}
    protected: abstractSchema(...): ... { ... }
};

它不是抽象的,但它不能自己实例化,因此可能满足您的需求。

答案 1 :(得分:-1)

你可以:

struct abstractSchema
{
    virtual ~abstractSchema() = 0 {}
};

不确定符合标准的编译器,但MSVC(2010)编译此代码就好了。