我有一个使用单链表的程序的头文件。最初存储在节点中的数据是整数,但是,为了使用模板类,我尝试将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
简单地说,Node<>
和List<>
是不同的模板。因此需要将模板参数从List
转发到Node
。
Node *first;
Node<T> *first;