类型未声明错误

时间:2012-10-06 18:21:12

标签: c++ class linked-list

我收到一条错误,说'T'没有命名类型。我很困惑这意味着什么。我以为我在课堂上宣称它是虚拟T?

template <class T>
class ABList : public ABCList<T> {
private:
    T    a [LIST_MAX];
    int  size;

public:
         ABList ();

    virtual bool isEmpty ();
    virtual int  getLength ();
    virtual void insert (int pos, T item);
    virtual T    remove (int pos);
    virtual T    retrieve (int pos);
};

T  ABList::retrieve (int pos) throw (ListException)
{
    if (pos <= 0 || pos >= count)
        throw new ListException();
    return item[pos – 1];
}

1 个答案:

答案 0 :(得分:2)

你必须把它写成:

template<typename T>
T  ABList<T>::retrieve (int pos) throw (ListException)
{
  //...
}

因为ABList是一个类模板。

请注意,您必须在已定义类模板的同一文件中定义成员函数。在.h文件中定义类模板,.cpp中的成员函数在模板的情况下工作。