我试图修改从基类继承的类的私有(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
}

09-27 13:43