2013-04-26 121 views
0

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

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

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

回答

3

这是接近你可以得到:

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

它不是抽象的,但它本身不能被实例化,所以可能会满足您的需求。

+0

这样做会很好。谢谢 – learnvst 2013-04-26 13:16:12

-1

您可以:

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

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

+5

这不是合法的C++。 – 2013-04-26 12:57:16

+0

@CharlesBailey来吧。我刚刚在MSVC – 2013-04-26 12:57:32

+8

LOL :)编译此代码.......... – 2013-04-26 12:58:02