2011-04-06 13 views
1

こんにちは は、私はクラスAA.hを持っていると私は定義した構造体の内部:C++では、ヘッダーを含めずに構造体を認識するためのクラスを作成するにはどうすればよいですか?

#include "BB.h" 

Struct foo{ 

}; 

Class AA 
{ 
… 
void funa() 
{ 
    BB bb; 
    foo f; 
    bb.func(f); 
} 
…. 
}; 

私の質問は、私はそれがfoo構造体を認識するようBB.hファイルでもAA.hを含めなければならないのです私は何か他に何かできますか?

答えて

2

あなたの構造体のヘッダーを作成して、あなたのAAとBBの両方に含めるのが最も簡単です。

#ifndef __FOO__H__ 
#define __FOO__H__ 
struct foo { 

}; 
#endif 
1

fooBB.hに使用したいと思います。しかし、AA.hBB.hに含めることはできません。循環的な依存関係が導入され、コンパイルが失敗するためです。これを解決する最も簡単な方法は、別のソースファイル(通常.cppの拡張子)にA::funaの実装を提供することです。 を実装するだけで、ヘッダーファイルにfuna();と宣言する必要があります。これを行うと、をAA.hに含める必要はありません(BB.hAA.cppに含める必要があります)。これにより、循環依存性が回避されます。