gpt4 book ai didi

c++ - 如何在 C++ 中声明自引用容器?

转载 作者:可可西里 更新时间:2023-11-01 15:08:54 26 4
gpt4 key购买 nike

对于 C 中 structtypedef,我不能这样做:

typedef struct {
unsigned id;
node_t *left;
node_t *right;
} node_t;

因为node_t在定义之前是不知道的,所以不能在自己的定义中使用。有点像第 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 指针。)

最佳答案

你可以这样做:

struct node_t : std::pair<unsigned, std::pair<node_t *, node_t * > >
{};

struct node_t 之后,编译器知道名称为 node_t 的类型存在,类似于前向声明。

关于c++ - 如何在 C++ 中声明自引用容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34525071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com