求c++高手解答。错误是List使用类模板需要参数列表;List<T>::Iterator没有合适构造函数可用。

#pragmaonceusingnamespacestd;头文件略。template<typenameT>classList{protected:struct_Node{... #pragma once

using namespace std;
头文件略。
template<typename T>

class List
{
protected:
struct _Node
{
T data;
string name;
_Node* next;
_Node(const T& q):data(q){};
}*head,*tail;//链表的头尾指针
typedef _Node* _range;

size_t len;
public:
List(){head=tail=NULL;len=0;}//平凡构造函数
List(const List& l)
List& operator=(List& l)
List& operator+=(const T& quad)
~List()
size_t size()
void traverse(void(*f)(const T&))
T& operator[](int index)
void push_back(const T& quad)
void pop_back() //由于字数原因,以上函数体略

friend class Iterator ;

class Iterator
{
protected:
List<T>*plist;
typename List<T>::Node *p;
public:
Iterator(const List<T>&list):plist(const_cast<List<T>*>(&List)),p(list.head){}
Iterator(const Iterator& itr):plist(itr.plist),p(itr.p){}
Iterator():plist(NULL),p(NULL){}

Iterator&begin(){p=plist->List<T>::head;return *this;}
Iterator end(){return Iterator();}
Iterator&operator=(const Iterator& itr){plist=itr.plist;p=itr.p;return *this;}
Iterator&operator++(){p=p->next;return *this;}
Iterator&operator+(int i){p=p+i;return *this;}
bool operator!=(const Iterator& itr){return p!=itr.p;}
T&operator*(){return p->data;}
};

};
用到的地方为
POINT vert[4];
int shape;
List::Iterator itr, begin = list.begin(), end = list.end();
if (isLearning) begin = begin + (list.size() - 1); 只截取了部分

还有一个错误是begin,end不是List<T>的成员
展开
 我来答
zhangqingxian
推荐于2017-09-04 · TA获得超过268个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:307万
展开全部
你定义List是个模板类,T必须用具体的类型来实例化,比如T实例化成int
List<int> list =
List<int>::Iterator begin = list.begin()

当然你也可以自定义一个类型来实例化
class MyType
{
......
}
List<MyType> list =
List<MyType>::Iterator begin = list.begin();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式