"使用类模板需要模板参数列表"和多个班级

时间:2016-10-23 07:08:54

标签: c++ templates linked-list

我有一个使用单链表的程序的头文件。最初存储在节点中的数据是整数,但是,为了尝试使用模板类,我尝试将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

1 个答案:

答案 0 :(得分:0)

简而言之,Node<>List<>是不同的模板。因此,您需要将模板参数从List转发到Node

替换

Node *first; 

通过

Node<T> *first;