• ベストアンサー

構造体のメンバ変数についての質問

構造体のメンバにポインタを定義しようと思っているのですが, 次のように2つの構造体に互い違いにポインタを持たせることができません. struct A{ B *b; }; struct B{ A *a; }; 実際はクラスでこれと似たようなことができなくて困っています. 方法はないのでしょうか? わかる方いたら教えてください.

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

前方宣言すればいいです。 struct B; struct A { B *b; }; struct B{ A *a; }; もし、Aのメソッドか何かでメンバbのメソッドとか変数とかを使いたい場合は ヘッダ(*.h)とインプリメントファイル(*.cpp)を別々すればいいです。

sorokuku
質問者

お礼

早速のご回答ありがとうございます. なるほど,構造体をこのように前方宣言できるとは知りませんでした. ヘッダと分けるのもやってみようと思います.ありがとうございました

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

structを省略しなければOK。 ただし、それぞれの構造体が所属する名前空間が異なるような場合は、既に回答が出ているように、不完全型として先行宣言する必要があります。 struct A{  struct B *b; }; struct B{  struct A *a; };

sorokuku
質問者

お礼

早速のご回答ありがとうございます. bluecampusさんから教えていただいた宣言の方法とあわせて確認し, 両方とも無事コンパイルを通すことができました.