对于C中typedef
的a struct
,我不能这样做:
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> node_t;
但是当然,编译器抱怨它node_t
在定义之前从未听说过node_t
,就像struct typedef
上面所说的那样.
那么有没有像这样的解决方法struct
?还是一些更好的方法来做到这一点?(不,我不想使用void
指针.)
你可以这样做:
struct node_t : std::pair> {};
经过struct node_t
编译器知道有名称的类型node_t
存在,类似于向前声明.