Rob*_*son 5 c++ templates crtp
为什么这段代码无法编译(未声明的标识符'x',g ++ 4.9和clang ++ 3.5)?
template <class T>
struct base {
int x;
};
template <class U>
struct end : public base<U> {
end() {
x = 5;
}
};
Run Code Online (Sandbox Code Playgroud)
注意:明确指定this->x
可以解决问题.
它不会编译,因为在名称查找期间会忽略依赖基类,并且base
它是依赖基类.
你可以使用this
指针:
end() {
this->x = 5;
}
Run Code Online (Sandbox Code Playgroud)
或者只是明确地命名基类:
end() {
base::x = 5;
}
Run Code Online (Sandbox Code Playgroud)
注意:
归档时间: |
|
查看次数: |
84 次 |
最近记录: |