为一个 typedef
一个 struct
在C中,我不能这样做:
typedef struct {
unsigned id;
node_t *left;
node_t *right;
} node_t;
因为 node_t
在定义之前不知道,因此不能在它自己的定义中使用它。有点像Catch-22。但是,我可以使用此变通方法来创建所需的自引用类型:
typedef struct node_s node_t;
struct node_s {
unsigned id;
node_t *left;
node_t *right;
};
同样,我想对引用自身的C ++容器做类似的事情:
typedef pair<unsigned, pair<node_t *, node_t * > > node_t;
但当然,编译器抱怨它从未听说过 node_t
在它被定义之前 node_t
,就像它一样 struct typedef
以上。
那么有没有像这样的解决方法 struct
?或者更好的方法来做到这一点? (不,我不想用 void
指针。)