若构造的类为模板类,那么派生类不可以直接使用继承到的基类数据和方法,需要通过this指针使用。否则,在使用一些较新的编译器时,会报“找不到标识符”错误。
template<typename T>
class A
{
public:
T a;
};
template<typename T>
class B : public A<T>
{
public:
B()
{
this->a = 0;
}
T value()
{
return this->a;
}
};
int main()
{
B<int> b;
cout << b.value() << endl;
return 0;
}
程序说明:定义模板基类A,再定义模板派生类B继承于A,此时使用A中变量或方法时,必须通过this->形式,否则编译器报错。若将类A、B修改为非模板类,则可直接使用基类A中的数据a,无需this->。