C++ 为什么B类<;T>;看不到父类a的受保护成员<;T>;?
以下代码未能编译():C++ 为什么B类<;T>;看不到父类a的受保护成员<;T>;?,c++,templates,C++,Templates,以下代码未能编译(): 根据我的理解,B应该可以访问其父类的受保护成员。为什么B看不到受保护的成员A::t\?因为基类A依赖于tempalate参数t,那么它就是一个依赖的基类,t\是一个非依赖的名称,而不是在依赖的基类中查找的 您可以使t依赖以解决问题,例如: T get() { return *this->t_; } 或 T get(){return*A::T;} 或 T get(){ 使用A::t; 返回*t; } 因为基类A依赖于tempalate参数T,所以它是一个依赖基类,
根据我的理解,
B
应该可以访问其父类的受保护成员。为什么B
看不到受保护的成员A::t\
?因为基类A
依赖于tempalate参数t
,那么它就是一个依赖的基类,t\
是一个非依赖的名称,而不是在依赖的基类中查找的
您可以使t
依赖以解决问题,例如:
T get() { return *this->t_; }
或
T get(){return*A::T;}
或
T get(){
使用A::t;
返回*t;
}
因为基类A
依赖于tempalate参数T
,所以它是一个依赖基类,T
是一个非依赖名称,在依赖基类中不会查找
您可以使t
依赖以解决问题,例如:
T get() { return *this->t_; }
或
T get(){return*A::T;}
或
T get(){
使用A::t;
返回*t;
}
T get() { return *this->t_; }
T get() { return *A<T>::t_; }
T get() {
using A<T>::t_;
return *t_;
}