我收到一条错误,说'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];
}
答案 0 :(得分:2)
你必须把它写成:
template<typename T>
T ABList<T>::retrieve (int pos) throw (ListException)
{
//...
}
因为ABList
是一个类模板。
请注意,您必须在已定义类模板的同一文件中定义成员函数。在.h
文件中定义类模板,.cpp
中的成员函数不在模板的情况下工作。