2012-04-19 17 views
-1

私は3つのクラスをC++でコーディングしています。それらはすべてシンプルですが、コンパイラは多くのエラーを出します。 cppファイルとヘッダーファイルの各クラス。起こりうる問題は何か? "base class undefined"の1つです。シンプルなクラスでエラーが発生する

class re { 
    int i; 
    int j; 
    string a; 
    re(int,int,int); 
    ~re(); 
} 

class Pre:public re { 
    int k; 
    public: 
    Pre(int,int,int); 
    ~Pre(); 
} 

class MPre:public Pre { 
    int z; 
    public: 
     MPre(int); 
    ~Mpre(int); 
} 
+8

クラス定義は、セミコロン( ";")で終わる必要があります。実際のコードでセミコロンを使用していますか? (あなたの例では使用していません)。 – mfontanini

+2

あなたはエラーを投稿できますか?私はあなたが貼り付けたものは、クラス定義の終わりに ';'が終わっていないからですが、推測するのが難しいためです。 – EdChum

+0

私はセミコロンを入れましたが、まだエラーがあります。 –

答えて

2

可能なミス:

  • 再クラスのコンストラクタがパブリックではありません。あなたはこれを知っていますか?

  • MPreコンストラクタは1つの入力を取得するため、Preクラスのデフォルトコンストラクタを記述する必要があります。

  • ヘッダーファイルを追加するときは注意してください。たとえば、Preクラスにはreクラスのヘッダファイルが必要です。

  • エラーundefined base classについては

+1

継承を使用する場合は、仮想デストラクタが必要です。 – AlexTheo

+2

メモリだけでなく、ファイルなどのようなリソースもあれば、デストラクタが必要です。 –

0

クラスへのポインタ変数を追加しない限りまた、あなたはデストラクタを記述する必要はありません、私はあなたが#includeクラスreがされているファイルをdはしていないと思います他のクラスがあるファイルで宣言されます。

0

クラス宣言にセミコロンがありません。また、別の.h .cppファイル内のすべてのクラスを分離するために、必要がない場合に備えて不要なコードを含めないようにします。また、継承の場合、デストラクタが仮想であることを確認してください。それ以外の場合は、メモリリークが発生します。

また、reのコンストラクタはpublicではありません。

関連する問題