2013-04-26 86 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