在这种情况下,为什么我无法访问基类成员x
B1
不合格案件?对我来说看起来并不含糊......
template<class T>
struct A { T x; };
template<class T>
struct B1 : A<T> { T f() { return A<T>::x; } };
struct B2 : A<int> { int f() { return x; } };
最佳答案
因为x
不依赖,它将在
定义模板的上下文。在此背景下,
编译器对T
一无所知,并且无法查看依赖基数
类。例如,它如何知道 A<T>
的任何信息?不知道什么T
是。 (例如,可能有 A
的专门化,具有完全不同的成员。)
关于c++ - 从模板继承时需要合格的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833260/