2013-06-05 44 views
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 
    } 

這是爲什麼?

+0

這是解決的問題http://stackoverflow.com/questions/1624564/access-protected-member-of-a-class-in-a-derived-class和http://stackoverflow.com/questions/ 11405/GCC-問題使用-A-構件對的一個鹼基類 - 即-取決於-ON-A-模板參數的 – sfstewman

回答

0

因爲它是一個從屬名稱,也就是說,它取決於模板參數T。您需要明確指定this->v[0]Vector<Vector234<T, N>,T,N>::v[0]

相關問題