为什么我不能在静态多态派生类中访问受保护的成员?

时间:2013-06-05 06:18:09

标签: c++

这很好用:

    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
    }

为什么会这样?

1 个答案:

答案 0 :(得分:0)

因为它是一个从属名称,也就是说,它取决于模板参数T。您需要明确指定this->v[0]Vector<Vector234<T, N>,T,N>::v[0]