我有一个使用单链表的程序的头文件。最初存储在节点中的数据是整数,但是,为了尝试使用模板类,我尝试将Node类和AnyList类转换为模板类;但是,当我编译时,出现一条错误消息,说明"' Node":使用类模板需要模板参数列表"出现。我已经看过模板类的例子,但是由于我试图在一个头文件中创建两个模板类,所以有点混乱。
#ifndef ANYLIST_H
#define ANYLIST_H
#include<iostream>
#include <string>
using namespace std;
template <typename T>
class Node
{
public:
Node() : data(0), next(NULL) {}
Node(T& theData, Node *newNext) : data(theData), next(newNext){}
Node* getNext() const { return next; }
T getData( ) const { return data; }
void setData(T& theData) { data = theData; }
void setNext(Node *newNext) { next = newNext; }
~Node(){}
private:
T data;
Node *next; //pointer that points to next node
};
template <typename T>
class AnyList
{
friend ostream& operator<<(ostream& out, const AnyList<T>& theList);
public:
AnyList();
void insert(const T& elem);
int getNumOfElem() const;
void destroyList();
~AnyList();
private:
Node *first;
int count;
};
#endif
答案 0 :(得分:0)
简而言之,Node<>
和List<>
是不同的模板。因此,您需要将模板参数从List
转发到Node
。
替换
Node *first;
通过
Node<T> *first;