web-dev-qa-db-ja.com

コンパイラエラーC4430:型指定子がありません-intが想定されています

私はこのエラーがあります:

「エラーC4430:型指定子がありません-intが想定されています。注:C++はdefault-intをサポートしていません」

このコード例では:

//A.h    
#include "B.h"
class A{
    B* b;
    ..
};

//B.h
#include "A.h"
class B{ 
    A* a; // error error C4430: missing type specifier - int assumed.
};
10
user3571201

これは 循環依存 の問題です。あるクラスへのポインタを宣言するために、クラスの定義は必要ありません。つまり、タイプは 完全なタイプ である必要はありません。したがって、A.hB.hを含める必要はありません。 前方宣言 で十分です。といった:

//B.h
class A; // change the include of A.h to forward declaration
class B { 
    A* a;
};
20
songyuanyao