Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在这种情况下,为什么我不能访问x不合格的基类成员B1?在我看来并不模棱两可……</p>
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(例如,可能有一个专业化,具有完全不同的成员。)
T
A<T>
A