问问题
5483 次
2 回答
14
尝试添加前向声明
template <class T> class List;
在开始Iterator.h
- 这可能是您需要允许类friend
内的声明Iterator
工作。
于 2010-01-03T00:49:52.930 回答
5
问题是 List 没有在 Iterator.h 中正确声明。相反,将 Iterator 类嵌套在 List 中(自动使其成为模板),无论如何您都可能想要这样做(使用 List::Iterator 而不是将其重命名为 ListIterator 或 IteratorForList,因为您将拥有多个 Iterator在命名空间中)。
template<class T>
struct List {
//...
struct Node {/*...*/};
struct Iterator {
// ...
private:
Iterator(Node*);
friend class List; // still required
};
//...
};
于 2010-01-03T00:49:09.377 回答