当你有一个派生类时,是否有一种更简单的方法从以下方法引用变量:
BaseClass::variable
编辑
正如它发生的那样,我找到了一个使用函数来解释这个问题的页面:
Template-Derived-Classes Errors.显然,使用模板类时会有所不同.
如果基类成员变量受保护或公共,则只能在派生类的任何成员函数中按名称引用它.如果它是基类的私有,则编译器将不允许派生类访问它.例:
class Base { protected: int a; private: int b; }; class Derived : public Base { void foo() { a = 5; // works b = 10; // error! } };
还可以说保持所有成员变量的私有性,并根据需要提供getter和setter.
另外,要注意"隐藏"数据成员:
class Base { public: int a; }; class Derived : public Base { public: int a; };
这将创建两个名为的变量a
:one in Base
,one in Derived
,它可能会导致混淆和错误.