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 に答える