2

在这种情况下,为什么我不能访问x不合格的基类成员B1?在我看来并不模棱两可……</p>

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; } };
4

1 回答 1

3

因为x不依赖,所以会在定义模板的上下文中查找。在这种情况下,编译器一无所知T,也无法查看依赖基类。例如,它怎么能知道任何事情A<T>而不知道是什么TA(例如,可能有一个专业化,具有完全不同的成员。)

于 2013-04-05T11:54:30.910 回答