求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>的成员 展开
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>的成员 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询