当你有一个派生类,是有指从比其他的方法给一个变量的简单的方法:有没有简单的方法来使用基类的变量?
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
两个变量:一个在Base
,在Derived
之一,它可能会导致混乱和错误。
只是为了澄清,访问基类的私有成员将导致编译器错误。编译器不会忽略它并寻找另一个匹配。 – KeithB 2008-10-27 19:18:20
你可以把你的问题更具体,这样你说明,它涉及到模板派生类的事实呢?谢谢。 – 2008-10-27 20:25:45