2011-02-13 262 views
1

我有一個抽象的基類。我從抽象基礎繼承了一個新類,我無法實例化對象。編譯器告訴其原因是抽象類的繼承

cannot allocate an object of abstract type

有什麼辦法來克服這一點。

回答

10

不能分配抽象類型

的對象這表示你已經不是在派生類中實現所有virtual功能。所以首先實現所有的純虛函數,然後創建這個類的實例。

你不能創建類的實例,它甚至有一個單獨的virtual函數!

記住,虛函數是那些零分配,如

class sample 
{ 
public: 
    virtual void f(); //virtual function 
    virtual void g()=0; //pure virtual function 
}; 

這裏只g()是純虛函數!這使得sampleabstract class,如果派生類沒有定義g(),它也將成爲一個抽象類。你不能創建任何這些類的實例,因爲它們都是抽象的!

+0

...在某些派生類中尚未被覆蓋。 – 2011-02-13 18:31:27

+1

謝謝你,@Nawaz。工作得很好。 – CHID 2011-02-13 18:33:02