2011-02-13 15 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

...派生クラスによってはオーバーライドされていません。 –

+1

ありがとう、@ナワズ。うまく働いた。 – CHID

関連する問題