为啥我不能访问静态多态派生类中的受保护成员?
Posted
技术标签:
【中文标题】为啥我不能访问静态多态派生类中的受保护成员?【英文标题】:Why can't I access protected member in static polymorphic derived class?为什么我不能访问静态多态派生类中的受保护成员? 【发布时间】:2013-06-05 06:18:09 【问题描述】:这很好用:
class A
protected:
int i;
;
class B:public A
public:
void f()
i=5; //fine
;
但是,如果我尝试对静态多态性做同样的事情,它会失败:
template <class Derived, typename T, int N>
class Vector
protected:
std::vector<T> v;
然后:
template <typename T, int N>
class Vector234:public Vector<Vector234<T, N>,T,N>
void test()
T t=v[0]; // v is undeclared identifier
这是为什么?
【问题讨论】:
这在问题***.com/questions/1624564/…和***.com/questions/11405/…中得到解决 【参考方案1】:因为是依赖名,也就是依赖于模板参数T
。您需要明确指定this->v[0]
或Vector<Vector234<T, N>,T,N>::v[0]
。
【讨论】:
以上是关于为啥我不能访问静态多态派生类中的受保护成员?的主要内容,如果未能解决你的问题,请参考以下文章