der*_*dji 6 c++ inheritance field protected
我有一个基类,比如BassClass,有一些字段,我让它们受到保护,还有一些纯虚函数.然后派生类,比如说DerivedClass像class DerivedClass : public BassClass.DerivedClass不应该从BassClass继承受保护的字段吗?当我尝试编译DerivedClass时,编译器抱怨DerivedClass没有任何这些字段,这里有什么问题?谢谢
Man*_*agu 11
如果BassClass(原文如此)并且DerivedClass是模板,并且BassClass您要访问的成员DerivedClass未指定为从属名称,则它将不可见.
例如
template <typename T> class BaseClass {
protected:
int value;
};
template <typename T> class DerivedClass : public BaseClass<T> {
public:
int get_value() {return value;} // ERROR: value is not a dependent name
};
Run Code Online (Sandbox Code Playgroud)
要获得访问权限,您需要提供更多信息.例如,您可以完全指定成员的名称:
int get_value() {return BaseClass<T>::value;}
Run Code Online (Sandbox Code Playgroud)
或者你可以明确指出你是指一个类成员:
int get_value() {return this->value;}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3811 次 |
| 最近记录: |