A ; typedef list B "?-6ren"> A ; typedef list B "?-定义这两个类 typedef map A; typedef list B; A 类和 B 类相互包含彼此的迭代器。编译器提示上述声明。如何解决问题? iammilind 说这是不可能的。但是这种逻辑关-6ren">
gpt4 book ai didi

c++ - 要定义这两个类 "typedef map A ; typedef list B "?

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:28 24 4
gpt4 key购买 nike

定义这两个类

typedef map<C, B::iterator> A;
typedef list<D, A::iterator> B;

A 类和 B 类相互包含彼此的迭代器。编译器提示上述声明。如何解决问题?

iammilind 说这是不可能的。但是这种逻辑关系出现了,比如一个优先级队列。那么有人有解决方法吗?

最佳答案

你不能只使用 typedef 来做到这一点。

用 B 代替它的 typedef:

typedef map<C, B::iterator> A;
typedef list<D, A::iterator> B;

变成:

typedef map<C, list<D, A::iterator>::iterator> A;
typedef list<D, A::iterator> B;

然后用 A 代替它的 typedef:

typedef map<C, list<D, map<C, list<D, A::iterator>::iterator>::iterator>::iterator> A;
typedef list<D, A::iterator> B;

这种替代将永远存在而不会崩溃......

编辑:我应该指出,如果您围绕映射和列表创建包装类,则可以转发声明这些类。

关于c++ - 要定义这两个类 "typedef map<C, B::iterator> A ; typedef list<D, A::iterator> B "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595420/

24 4 0