从模板继承时需要合格的访问权限

时间:2013-04-05 11:52:03

标签: c++ templates

在这种情况下,为什么我不能在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; } };

1 个答案:

答案 0 :(得分:3)

因为x不依赖,所以它会被查找 定义模板的上下文。在这种背景下, 编译器对T一无所知,也无法查看依赖库 类。例如,在不知道A<T>是什么的情况下,如何知道T的任何内容。 (例如,可能有A的专业化,但成员完全不同。)