【发布时间】:2021-12-05 00:04:18
【问题描述】:
您好,我想成为迭代器中的类链表的朋友,但我不知道如何使用模板来实现这一点
class Iterator{
private:
node<T>* v;
public:
Iterator(node<T>* u){
v = u;
}
T& operator*(){
return v->element;
}
friend class LinkedList;
};
template <class T>
class LinkedList{
public:
node<T>* head;
node<T>* tail;
}
我不断收到错误
doubleLinkedList.cpp: In instantiation of 'class Iterator<int>':
doubleLinkedList.cpp:214:26: required from here
doubleLinkedList.cpp:35:18: error: template argument required for 'class LinkedList'
node<T>* v;
^
我尝试了很多方法,比如我将模板放在朋友参数之上,但没有任何效果
【问题讨论】:
-
我想你的迭代器也是一个模板。如果你这样做
friend class LinkedList<T>是否有效? -
您的代码没有定义
node或T。 -
您只能在模板本身的定义中省略模板参数。