0

テンプレート化されていない派生クラスを使用して、テンプレート化された基本クラスを作成しようとしています。私は umsl.edu/~subramaniana/templates8.html とhttp://www.cplusplus.com/doc/tutorial/templates/に従っています。

template <class Type>
class Base {
protected:
    std::string line;
public:
    Base();
};

class DerivedA : public Base<T> {
    //error: 'T' was not declared in this scope
    //error: template argument 1 is invalid
public:
    DerivedA();
protected:
    std::list<std::string> A;
};

これがどのように機能するかについて、何か基本的なことが欠けていると思いますが、理解できないようです。

これは完全なヘッダーと実装です:

http://ideone.com/H9NXdw

4

1 に答える 1

1

template<typename T>クラス DerivedA 宣言を見逃しました。Base はテンプレートです。テンプレート パラメータを指定する必要があります。

template<typename T> 
class DerivedA : public Base<T> 

または、DerivedA を特定のタイプの Base から派生させることもできます。たとえば、次のようになります。

 class DerivedA : public Base<int>
于 2013-05-29T00:19:49.557 に答える