A と B の 2 つのクラスを定義したいと考えています。A には、クラス B オブジェクトであり、クラス内で初期化されるデータ メンバーがあります。A には、この B 型データ メンバーの値を取得するメソッドもあり、このメソッドは B のフレンド メソッドとして宣言されます。これが私のコードです。
class A{
public:
int getBValue();
private:
B b=B(1);
};
class B{
public:
friend int A::getBValue();
B(int i):value(i){}
private:
int value;
};
int A::getBValue(){
return b.value;
}
当然のことながら、クラス A の定義に不明なタイプ B があるため、コンパイルは失敗しました。ソース内の A と B の定義を交換しようとしましたが、結果はさらに悪いものでした。この A と B の間の相互参照の問題を解決する方法はありますか?