Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么B类<;T>;看不到父类a的受保护成员<;T>;?_C++_Templates - Fatal编程技术网

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