2012-03-14 15 views
-2

私は、クラスメンバのポインタとポインタを返すメソッドを実装しようとしていますが、コンパイル時に "syntax error:missing ';' '*' の前に」と "型指定が欠落 - 仮定int型注:
MAIN.CPP:C++クラスメソッドは、ユーザ定義のクラスインスタンスへのポインタを返します

#include "AClass.h" 
#include "BClass.h" 

int main (int argc, const char* argv[]) 
{ 
    AClass a; 
    BClass b; 
    return 0; 
} 

AClass.h C++は、デフォルト-INT" エラーをサポートしていません

ここでコードは次のとおりです。

#ifndef ACLASS_H 
#define ACLASS_H 

#include "BClass.h" 

class AClass 
{ 
public: 
    BClass* getB(); 
    void setB (BClass* inst); 
private: 
    BClass* b; 
}; 

#endif 

BClass.h:

#ifndef BCLASS_H 
#define BCLASS_H 

#include "AClass.h" 

class BClass 
{ 
public: 
    AClass* getA(); 
    void setA (AClass* inst); 
private: 
    AClass* a; 
}; 

#endif 

私も具体化していないOU t cppファイルのクラスと私はエラーの文字列を取得: 私はC + +ファイルを作成し、すべてを定義するかどうかは関係ありません、これらのエラーが残ります。

1>------ Build started: Project: memberUDFpointers, Configuration: Debug Win32 ------ 
1> Main.cpp 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): error C2143: syntax error : missing ';' before '*' 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(9): warning C4183: 'getA': missing return type; assumed to be a member function returning 'int' 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(10): error C2061: syntax error : identifier 'AClass' 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(12): error C2143: syntax error : missing ';' before '*' 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(12): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>e:\documents\cpp projects\memberudfpointers\memberudfpointers\bclass.h(12): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

私は多くの異なる投稿をすべて見てきましたが、まだ私の頭を傷つけています。 誰かが私に手がかりを与えることができますか?

+1

あなたは円形の包含物を持っています。 '#include'の代わりにヘッダーに前方宣言を使用してください。 – ildjarn

+1

循環依存、前方宣言;それはあなたを始めるはずです。 – Nim

+0

[C++の循環依存関係]の重複可能性があります(http://stackoverflow.com/questions/4018816/circular-dependency-in-c) –

答えて

1

AClassの定義はBClassの定義に依存し、BClassの定義はAClassの定義に依存します。もう一方がすでに定義される前に定義することはできません。

class A; 

class Bclass { 
    // ... 
}; 

、そこから行く:あなただけの1つのクラスを宣言することができるように

は幸いなことに、実際の授業だけで、他へのポインタを使用しています。

+0

ああ、その理由は、エラーがBClass.h上にのみポップアップしていた理由です。これは完璧な意味合いがあります。ありがとう! –

関連する問題