我正在尝试使用非模板化派生类创建模板化基类。我一直在关注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;
};
我认为我遗漏了关于这一切是如何运作的基本原则,但我似乎无法掌握它。
这是完整的标题和实现:
答案 0 :(得分:1)
您在DerivedA类声明中错过了template<typename T>
。 Base是一个模板,您需要为它提供模板参数。
template<typename T>
class DerivedA : public Base<T>
或者你可以让DerivedA派生自某种类型的Base,例如:
class DerivedA : public Base<int>