0

我收到一条错误消息,说“T”没有命名类型。我对这意味着什么感到困惑。我以为我在课堂上宣布它说 Virtual 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];
}
4

1 回答 1

2

你必须写成:

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

因为ABList一个类模板。

请注意,您必须在定义类模板的同一文件中定义成员函数。在文件中定义类模板.h,而在模板中定义成员函数.cpp不起作用

于 2012-10-06T18:23:16.530 回答