只是偶然发现了一些我无法解释的东西。以下代码无法编译
template<int a>
class sub{
protected:
int _attr;
};
template<int b>
class super : public sub<b>{
public:
void foo(){
_attr = 3;
}
};
int main(){
super<4> obj;
obj.foo();
}
而当我更改为时_attr = 3;
似乎this->attr = 3;
没有问题。
这是为什么?有什么情况你必须使用它吗?
我曾经g++ test.cpp -Wall -pedantic
编译,我得到以下错误
test.cpp: in member function 'void super<b>::foo()':
test.cpp:11:3: error: '_attr' was not declared in this scope