这很好用:
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 :(得分:0)
因为它是一个从属名称,也就是说,它取决于模板参数T
。您需要明确指定this->v[0]
或Vector<Vector234<T, N>,T,N>::v[0]
。