- ベストアンサー
構造体のメンバ変数についての質問
構造体のメンバにポインタを定義しようと思っているのですが, 次のように2つの構造体に互い違いにポインタを持たせることができません. struct A{ B *b; }; struct B{ A *a; }; 実際はクラスでこれと似たようなことができなくて困っています. 方法はないのでしょうか? わかる方いたら教えてください.
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
前方宣言すればいいです。 struct B; struct A { B *b; }; struct B{ A *a; }; もし、Aのメソッドか何かでメンバbのメソッドとか変数とかを使いたい場合は ヘッダ(*.h)とインプリメントファイル(*.cpp)を別々すればいいです。
その他の回答 (1)
- jacta
- ベストアンサー率26% (845/3158)
回答No.2
structを省略しなければOK。 ただし、それぞれの構造体が所属する名前空間が異なるような場合は、既に回答が出ているように、不完全型として先行宣言する必要があります。 struct A{ struct B *b; }; struct B{ struct A *a; };
質問者
お礼
早速のご回答ありがとうございます. bluecampusさんから教えていただいた宣言の方法とあわせて確認し, 両方とも無事コンパイルを通すことができました.
お礼
早速のご回答ありがとうございます. なるほど,構造体をこのように前方宣言できるとは知りませんでした. ヘッダと分けるのもやってみようと思います.ありがとうございました