当你有一个派生类时,是否有更简单的方法从以下方法引用变量:
BaseClass::variable
修改
当发生这种情况时,我找到了一个使用函数来解释此问题的页面:
Template-Derived-Classes Errors。显然,使用模板类时会有所不同。
答案 0 :(得分:10)
如果基类成员变量受保护或公共,则只能在派生类的任何成员函数中按名称引用它。如果它是基类的私有,则编译器将不允许派生类访问它。例如:
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
的变量:Base
中的一个,Derived
中的一个,它可能会导致混淆和错误。
答案 1 :(得分:1)