プロが教える店舗&オフィスのセキュリティ対策術

構造体のメンバにポインタを定義しようと思っているのですが,
次のように2つの構造体に互い違いにポインタを持たせることができません.

struct A{
B *b;
};
struct B{
A *a;
};

実際はクラスでこれと似たようなことができなくて困っています.
方法はないのでしょうか?
わかる方いたら教えてください.

A 回答 (2件)

structを省略しなければOK。


ただし、それぞれの構造体が所属する名前空間が異なるような場合は、既に回答が出ているように、不完全型として先行宣言する必要があります。

struct A{
 struct B *b;
};
struct B{
 struct A *a;
};
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/19 14:17

前方宣言すればいいです。



struct B;
struct A {
B *b;
};
struct B{
A *a;
};

もし、Aのメソッドか何かでメンバbのメソッドとか変数とかを使いたい場合は
ヘッダ(*.h)とインプリメントファイル(*.cpp)を別々すればいいです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/19 14:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!