Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重写原始继承函数后调用该函数_C++_Class_Inheritance_Overriding_Private - Fatal编程技术网

C++ 重写原始继承函数后调用该函数

C++ 重写原始继承函数后调用该函数,c++,class,inheritance,overriding,private,C++,Class,Inheritance,Overriding,Private,我试图修改从基类继承的类的私有成员。问题是在派生类中,我重写了设置私有成员的方法。在下面的代码中,我想使用重写的方法setTime修改_a._time和b._time 基类 class timeClass { public: void setTime(double time){ _time = time;} double getTime(){ return _time;} private: double _time; } 固有一级

我试图修改从基类继承的类的私有成员。问题是在派生类中,我重写了设置私有成员的方法。在下面的代码中,我想使用重写的方法setTime修改_a._time和b._time

基类

class timeClass
{
    public:
        void setTime(double time){ _time = time;}
        double getTime(){ return _time;}
    private:
        double _time;
}
固有一级

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
}

@死杰克:很高兴它有帮助:)出于某种原因,当我运行b.setTime(1.0)时,时间没有更新;我不能发布更多的代码了,但你能猜出会发生什么吗?@dead\u杰克:很难说。我建议你问一个新问题,并发布相关代码