继承非模板类​​的范围问题(模板库,非模板派生)

时间:2013-05-29 00:17:09

标签: c++

我正在尝试使用非模板化派生类创建模板化基类。我一直在关注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

1 个答案:

答案 0 :(得分:1)

您在DerivedA类声明中错过了template<typename T>。 Base是一个模板,您需要为它提供模板参数。

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

或者你可以让DerivedA派生自某种类型的Base,例如:

 class DerivedA : public Base<int>