1

たとえば、クラスAの定義があります

class A {
 ... 
 }

ああで

および bh の B

class B {
 ... 
 }

ah では必要#include "b.h"で、bh では必要です#include "a.h"が、コンパイラの再帰的障害です。

そのような事前防御で1つのファイルでそれをだますことができます

class A;
class B {
     ... 
     }
class A {
     ... 
     }

しかし、わかりやすくするために...それらを互いに分離したいのですが、どうすればそれを作成できますか?

4

1 に答える 1

2

前方宣言は行く方法です:

//B.h
class A;
class B
{
};

//A.h
class B;
class A
{
};

完全な型、つまり型のデータメンバーが必要な場合、AまたはBそれぞれの他のクラスで必要とされる場合、これは機能しないことに注意してください (メソッドパラメーター、戻り値の型、ポインター、または参照は不完全な型で機能します)。

于 2012-10-04T05:35:48.087 に答える