1

这工作正常:

    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
    }

为什么是这样?

4

1 回答 1

0

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

于 2013-06-05T06:25:37.740 回答