【发布时间】:2015-12-22 22:19:49
【问题描述】:
我第一次尝试实现 LinkedList。我几乎完成了头文件的声明,但是我遇到了这个不会消失的小错误。在 Node 类下面声明类 LinkedList 和 Iterator 的地方,我不断收到一条消息“将 LinkedList 重新定义为另一种符号”和“将迭代器重新定义为另一种符号”。我尝试在代码的最顶部声明类,如下所示,将友元函数移动到私有声明,但似乎没有任何效果。有人可以指出我做错了什么。除了下面的内容,我没有做太多其他事情。
class LinkedList;
class Iterator;
template <typename T>
class Node{
public:
Node(T Data);
private:
T data;
Node* next;
Node* previous;
friend class LinkedList;
friend class Iterator;
};
template<typename T>
class LinkedList {
public:
LinkedList();
void pushback(T data);
//void insert(Iterator pos, T data);
~LinkedList();
//Iterator begin();
//Iterator end();
private:
Node* first;
Node* last;
friend class Iterator;
};
template <typename T>
class Iterator{
public:
private:
Node* position;
LinkedList* container;
friend class LinkedList;
};
#endif /* defined(__Linked_List_1__LinkedList__) */
【问题讨论】:
标签: c++ list class pointers friend