我想第一次实现LinkedList。我几乎完成了头文件的声明,但是我得到了一个不会消失的小错误。在Node类下面声明类LinkedList和Iterator的地方,我总是收到一条消息“LinkedList重新定义为不同类型的符号”和“重新定义Iterator作为不同类型的符号”。我试着在下面的代码的顶部声明类,将朋友函数移动到私有声明中,但似乎没有任何效果。有人能指出我做错了什么吗?除了下面的内容,我还没有做过其他的事情。请链接列表声明?
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__) */
谢谢。这解决了第一个问题,但是我所有的朋友的其他声明现在都说“精心制作的类型是指模板”。关于我该怎么做的任何想法? –
其实我找到它只是语法谢谢 –