ページ 11

typedefの巡回参照問題

Posted: 2013年10月26日(土) 12:56
by みどり
例えば
typedef struct {
C c;
....;
} A;


typedef struct {
A a;
....;
} B;

typedef struct {
B b;
....;
} C;

どんな順番でならんでも、必ずあるtypedefの中に未定義のメンバーが存在し、コンパイルエラーが出されます。

どう対処すれば宜しいでしょうか。

Re: typedefの巡回参照問題

Posted: 2013年10月26日(土) 15:34
by へろりくしょん
本当にそのような構造体が必要なのか根本的なところから見直します。

仮に、A hoge; と宣言した場合、
hoge.c.b.a.c.b.a.c.b.a.c.b.a..... と延々にメンバ変数を参照できてしまいますが、
この構造体がどのようにメモリに配置されるか想像できますか。

論理的に不可能であることが分かると思います。


どうしても件のよう入れ子にしたい場合は、不完全型として宣言することは出来ますが、
不完全型のインスタンスは作れませんので、メンバ変数はポインタで宣言するしかありません。