C++相談室 part36
■ このスレッドは過去ログ倉庫に格納されています
0331デフォルトの名無しさん
NGNG#include "b.h"
class A { void func(B b); };
// b.h ////////////////////
#include "c.h"
class B{ C *pc; };
// c.h ///////////////////
#include "d.h"
class C{ D d; };
// d.h //////////////////
#include "a.h"
class D : public A { ・・・ };
このように4つのファイルでインクルードのループができたような
状態のプログラムがあるのですが、コンパイルすると
d.hで 定義されていない基底クラスAが使われています。
みたいなエラーが出るのですが、原因がわかりません。
前方参照とかの関係かとおもったので、d.h のDクラスを定義する前に
class A; という行を追加してみてもエラーが消えません。
さらに c.h で class D; b.hで class C; a.hで class B; という
前方宣言をそれぞれいくら追加したり消したりしても直りません。
b.h の C *pC; と #include "c.h" をコメントアウトするとエラーがなくなります
が、それでは考えている動作をさせることができません。
どうすれば解決できるかわかる方がいましたら教えていただけないでしょうか。
■ このスレッドは過去ログ倉庫に格納されています