当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在C++中声明自引用容器?》经验,为你挑选了1个好方法。

对于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指针.)



1> Rabbid76..:

你可以这样做:

struct node_t : std::pair >
{};

经过struct node_t编译器知道有名称的类型node_t存在,类似于向前声明.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有