互いを参照する構造体について

[戻る]
twistor 2006/03/13(月) 15:51:09
VC++を使用しています(C++自体初心者です)。
構造体aがメンバとして構造体aへのポインタ、構造体bへのポインタを含み、
構造体bがメンバとして構造体aへのポインタを含むとき、
どのように宣言すればよいのでしょうか。
とりあえず

typedef struct a{
   a* m_a;
   b* m_b;
};

typedef struct b{
   a* m_a;
};

としてコンパイルしてみました。
「構文エラー;';'が'*'の前にありません。」や、
「識別名を宣言するのに、型が指定されていません。」といったエラーメッセージがでて
きます。
どなたかご教授お願いします。

Blue 2006/03/13(月) 15:56:29
struct a の中では、まだ struct bが何者かわからない状態ですので、

struct b;

struct a
{
    a* m_a;
    b* m_b;
};

struct b
{
   a* m_a;
};

としてみてはどうでしょうか?

ところで、typedefの使い方おかしくないでしょうか?

twistor 2006/03/13(月) 16:04:21
[[解決]]
ああ、コンパイル通りました。
迅速なお返事をどうもありがとうございました。
typedef、確かにおかしいです。
もともと違う形で書かれていたものをコピーして修正して使っていたのですが・・・
修正にもなってませんでしたね。
ありがとうございます。

古いスレッドには追加発言できません。