【问题标题】: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
    }

这是为什么?

【问题讨论】:

标签: c++


【解决方案1】:

因为是依赖名,也就是依赖于模板参数T。您需要明确指定this-&gt;v[0]Vector&lt;Vector234&lt;T, N&gt;,T,N&gt;::v[0]

【讨论】:

    猜你喜欢
    • 2013-03-05
    • 1970-01-01
    • 2018-11-27
    • 2011-11-10
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多