2016-06-14 15 views
0

Ich habe eine Basisklasse und eine "untergeordnete" Klasse namens Something, die private Vererbung für die Wiederverwendung von generiertem Code verwendet.private Vererbung in C++ und Wie wiederverwenden, aber dekorieren Sie einen Operator der Basisklasse?

class Base { 
protected: 
    Base(); 
public: 
    virtual ~Base(){} 
    void cool(); 
    Base& operator=(const Base& other); 
}; 
class Something : private Base {  
public: 
    Something(); 
    void cool(){ 
      // own stuff 
      // call method from base 
      Base::cool(); 
      // own stuff 
    } 

    Something& operator=(const Something& other){ 
      if (this != &other){ 
       // do own things 

Und jetzt hier, zwischen Dekoration, sollte der Anruf des Operators = von der Basisklasse sein. Aber ich bin mir nicht sicher, wie ich das richtig machen soll. Sollte ich dynamic_cast etwas wie folgt aus:

   (dynamic_cast<Base>(*this)).operator =(dynamic_cast<Base>(other)); 
       // do own things 
      } 
      return *this; 
    } 

} 

Mit freundlichen Grüßen.

+0

Wäre das nicht 'this-> Basis :: operator = (andere)' Arbeit? – melpomene

+1

'Base :: operator = (andere)' – Arunmu

Antwort

2

Trotz private Vererbung, Something ist immer noch ein Base, so ist es erlaubt, direkt die Base ‚s operator =() mit den übergebenen in Something zu nennen.

So: Base::operator =(other);