#include <iostream>
struct Writer{
virtual void nowWrite()=0;
};
struct Pen : Writer{
void nowWrite(){
//
std::cout << "Writing with pen"<< std::endl;
}
};
struct Marker : Writer{
void nowWrite(){
//
std::cout << "Writing with marker"<< std::endl;
}
};
template<class T>
struct A{
T t;
};
template<class T>
struct B: public A<T>{
void DoStuff(){
this->t.nowWrite(); // gives error if there is no this->
}
};
int main(){
B<Pen> b;
b.DoStuff();
}
我试图了解使用this
访问基类变量(从派生类访问它们)的背后原因是什么。为什么编译器无法确定我要访问的内容。
如果我不使用它,我会得到一个错误
test_tpv.cpp:在成员函数“ void B :: DoStuff()”中: test_tpv.cpp:37:4:错误:在此范围内未声明“ t” t.nowWrite();