C++ 您好,我正在尝试创建一个函数,该函数从C++;
提前谢谢。 我正在使用模板类&我收到一个错误,说“error C2955'List”:使用类模板需要模板参数列表“ 这是我的列表类C++ 您好,我正在尝试创建一个函数,该函数从C++;,c++,linked-list,C++,Linked List,提前谢谢。 我正在使用模板类&我收到一个错误,说“error C2955'List”:使用类模板需要模板参数列表“ 这是我的列表类 template <class T> struct node{ T Data; node<T> * prev; node<T> * next; }; template <class T> class List { public: node<T> * front;
template <class T>
struct node{
T Data;
node<T> * prev;
node<T> * next;
};
template <class T>
class List
{
public:
node<T> * front;
node<T> * rear;
List();
virtual ~List();
bool isEmpty();
void insertFirst(T Data);
void insertBack(T Data);
void insertBefore(node<T> * before, T Data);
void insertAfter(node<T> * after, T Data);
int removeFirst();
int removeLast();
void removeBefore(node<T> * before);
void removeAfter(node<T> * after);
node<T> * find(T Data);
//void destroy();
void insertRangeBefore(node<T> * before, List<T> range);
void insertRangeAfter(node<T> * after, List<T> range);
void removeRange(node<T> * rangeFirst, node<T> * rangeLast);
template <class T>
List getSublist(node<T> * rangeFirst, node<T> * rangeLast);
};
模板
结构节点{
T数据;
节点*prev;
节点*下一步;
};
模板
班级名单
{
公众:
节点*前端;
节点*后部;
List();
虚拟列表();
bool是空的();
void insertFirst(T数据);
void insertBack(T数据);
void insertBefore(节点*before,T数据);
void insertAfter(节点*after,T数据);
int removeFirst();
int removeLast();
void removeBefore(节点*before);
无效删除之后(节点*之后);
节点*查找(T数据);
//无效销毁();
void insertRangeBefore(节点*before,列表范围);
void insertRangeAfter(节点*after,列表范围);
void removeRange(节点*rangeFirst,节点*rangeLast);
模板
List getSublist(节点*rangeFirst,节点*rangeLast);
};
我想创建列表的实例,然后返回子列表
template<class T>
List<T> List<T>::getSublist(node<T>* rangeFirst, node<T>* rangeLast) {
return List();
}
模板
列表::getSublist(节点*rangeFirst,节点*rangeLast){
返回列表();
}
您的代码实际上声明了一个模板成员(使用另一个类型T
作为模板参数)。只需从成员声明中删除行模板
BTW,您可以考虑使用<代码>节点< /C> >嵌套类型的<代码>列表< /> >。然后,您可以将
节点
替换为节点
(几乎)无处不在(除非您必须限定它,当它是列表::节点
或类型名称列表::节点
)
您的代码实际上声明了一个模板成员(使用另一个类型T
作为模板参数)。只需从成员声明中删除行模板
BTW,您可以考虑使用<代码>节点< /C> >嵌套类型的<代码>列表< /> >。然后,您可以将
节点
替换为节点
(几乎)无处不在(除非您必须限定它,当它是列表::节点
或类型名称列表::节点
时除外)。看起来像列表
是一个类模板。您忘记提供它的模板参数。就像您在List::getSublist
List
和返回列表()中编写List
代码>需要
请提供。但是我怀疑List
是一个模板类,不允许在没有指定模板参数的情况下使用这样的名称。这就是错误消息告诉您的。什么是不清楚的?是的列表是一个类模板对不起,我没有张贴。如何提供其模板参数??您知道如何使用模板吗?看起来List
是一个类模板。您忘记提供它的模板参数。就像您在List::getSublist
List
和返回列表()中编写List
代码>需要
请提供。但是我怀疑List
是一个模板类,不允许在没有指定模板参数的情况下使用这样的名称。这就是错误消息告诉您的。什么是不清楚的?是的列表是一个类模板对不起,我没有张贴。我如何提供它的模板参数??你知道如何使用模板吗?我这样做了,它仍然有一个错误,说“无法将函数定义与现有声明相匹配”,即使我在头文件中已经有一个匹配的函数声明否,你不知道,不客气。如果您愿意接受我的回答,我将不胜感激(单击勾号)。我这样做了,但仍然有一个错误,即“无法将函数定义与现有声明相匹配”,尽管我在标题文件中已经有了匹配的函数声明否,您没有,不客气。如果您能接受我的回答(点击勾号),我将不胜感激。
template<class T>
List<T> List<T>::getSublist(node<T>* rangeFirst, node<T>* rangeLast)
// ^^^ corrections here
{
return List();
}
template<class T>
class List
{
...
List getSublist(node<T>*, node<T>*); // not a template
};