0

我正在制作一个纯虚拟析构函数来强制一个类是抽象的,除了 ctor 之外不包含任何方法。我将其作为仅标头实现

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

有没有像(非法的)virtual ~abstractSchema(){} = 0;这样的语法糖可以让我在一行上声明和定义,而不是像上面的例子那样拆分定义和实现?

4

2 回答 2

3

这是尽可能接近的:

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

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

于 2013-04-26T12:55:58.897 回答
-1

你可以:

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

不确定符合标准的编译器,但 MSVC (2010) 可以很好地编译此代码。

于 2013-04-26T12:56:16.027 回答