当您有派生类时,是否有一种更简单的方法可以从以下方法中引用变量:
BaseClass::variable
编辑
碰巧,我找到了一个使用函数来解释此问题的页面:
Template-Derived-Classes Errors。显然,在使用模板类时会有所不同。
当您有派生类时,是否有一种更简单的方法可以从以下方法中引用变量:
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
:一个 in Base
,一个 in Derived
,并且可能会导致混淆和错误。