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 回答