我试图修改从基类继承的类的私有(private)成员。问题是在派生类中,我重写了设置私有(private)成员的方法。在下面的代码中,我想使用覆盖的方法setTime修改_a._time和b._time。
基类
class timeClass
{
public:
void setTime(double time){ _time = time;}
double getTime(){ return _time;}
private:
double _time;
}
隐蔽类1
class a : public timeClass
{
public:
void doStuff(){ }
private:
double things;
}
隐蔽类2
class bClass : public timeClass
{
public:
void setTime(double time)
{
_time = time; //can't access _time since its private
_a.setTime = time;
}
private:
aClass _a;
}
我正在尝试做的事情甚至有可能吗?谢谢。
最佳答案
这是您应该这样做的方式:
void setTime(double time)
{
timeClass::set_time(_time);
// ^^^^^^^^^^^
// Will invoke the base class's set_time() function
_a.setTime(time);
// ^^^^^^^^^^^^^
// Will invoke setTime() on the `_a` subobject
}