1

我正在尝试修改从基类继承的类的私有成员。问题是在派生类中,我重写了设置私有成员的方法。在下面的代码中,我想使用重写的方法 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;
}

我想要做的甚至可能吗?谢谢。

4

1 回答 1

2

这就是你应该这样做的方式:

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
}
于 2013-06-05T20:25:44.547 回答