2013-06-05 19 views
1

我想修改從基類繼承的類的私有成員。問題是在派生類中,我重寫了設置私有成員的方法。在下面的代碼中,我想使用重寫的方法setTime修改_a._time和b._time。重寫它後調用原始繼承函數

基類

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

Inhereted類1

class a : public timeClass 
{ 
    public: 
     void doStuff(){ } 
    private: 
     double things; 
} 

Inhereted類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; 
} 

正是我試圖做甚至可能嗎?謝謝。

回答

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 
} 
+0

真棒!謝謝。 –

+0

@dead_jake:很高興幫助:) –

+0

出於某種原因,當我運行b.setTime(1.0)時,_a._time不會更新;我不能發佈任何更多的代碼,但是你有沒有猜測可能會發生什麼? –