覆盖后调用原始的继承函数

时间:2013-06-05 20:24:06

标签: c++ class inheritance override 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;
}

我尝试做的甚至可能吗?感谢。

1 个答案:

答案 0 :(得分: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
}