【发布时间】:2021-11-08 23:26:06
【问题描述】:
我试图在下面的方法中覆盖我的程序中的函数,但是在编译时它显示变量 1 在派生的清除函数中未定义。
将派生类更改为非模板时,我已经能够使其工作,但是在启动 Base 模板时我缺少 DATATYPE 和 VALUE 变量。
template <class DATATYPE=short, short VALUE = 100>
class Base {
public:
Base();
virtual void clear()=0;
protected:
int variable1;
}
template <class DATATYPE=short, short VALUE = 100>
class Derived : public Base<DATATYPE, VALUE> {
public:
Derived();
void clear() {
int testVar = variable1;
}
}
【问题讨论】:
-
请添加完整的编译器错误信息。
-
什么是
testVar? -
无论如何,对于您的具体错误,请查看this question,了解为什么访问模板实例化的基类成员需要
this->前缀。
标签: c++ templates overriding virtual