错误'TempSLLNODE':使用类模板需要模板参数列表

时间:2014-01-12 12:03:21

标签: c++ templates

#ifndef TEMPLATE_LINKED_LIST
#define TEMPLATE_LINKED_LIST


template <class T>
class TempSLLNODE
{
public:
    T info;
    TempSLLNODE *next;
    TempSLLNODE( T value, TempSLLNODE *ptr = NULL)
    {
        info = value;
        next = ptr;
    }
};

template <class T>
class TempSLL
{
public:
    TempSLL()
    {
        head = tail = 0;
    }
    ~TempSLL();
    T isEmpty()
    {
        return head == 0;
    }
    void addToHead(T);
    void addToTail(T);
    T deleteFromHead();   // delete the head and return its info;
    T deleteFromTail();   // delete the tail and return its info;
    void deleteNode(T);
    bool isInList(T) const;
private:
    TempSLLNODE *head, *tail;
};

#endif

2 个答案:

答案 0 :(得分:1)

TempSLLNODE是模板,您需要使用类型:

更新

TempSLLNODE *head, *tail;

为:

TempSLLNODE<T> *head, *tail;
//         ^^^

答案 1 :(得分:1)

你至少可以提到错误的一行。 为了将来参考,错误在于:

private:
    TempSLLNODE *head, *tail;

您需要知道,当您从类模板中实例化变量时,您应该提及模板类型。实际上,对于用于实例化变量的每个模板类型,编译器会为您编译并生成类的代码,在此之前,编译器不会为类模板生成任何代码。

所以我想你的意思是:

private:
    TempSLLNODE<T> *head, *tail;