aufrufen einer funktion einer parametrisierten basisklasse?



  • Geht das irgendwie?

    Also meine basisklasse ist was mit einen template argument.

    template<class T> class TBase
    {
       virtual void foo()
       {
          //tue etwas
       }
    }
    

    sowas halt

    nun möchte ich in meiner ablgeiteten klasse die funktion foo ein wenig abändern aber die grundfunktion der basisklasse dennoch aufrufen. Normalerweise ging das immer mit TBase::foo
    jedoch braucht er nun template parameter. Aber meine abgeleitete klasse weiss doch von welchen template typ sie ist

    class Myclass : public TBase<MyTemplateClass*>
    {
        void foo()
        {
           //rufe foo von super auf
    
           //mache noch was zusätzliches
        } 
    };
    

    Geht das irgendwie ohne das ich nochmal den template parameter mit angeben muss?



  • Du mußt schon den kompletten Typ der Basisklasse angeben, wenn du ihre Methoden aufrufen willst. Wenn dir das zu viel Arbeit ist, kannst du ihn ja per typedef etwas abkürzen.



  • MVC++ kann auch __super:: nehmen 😛

    TBase<MyTemplateClass*>::foo();
    

    wäre ansonsten der korrekte Aufruf.



  • template<class T> class TBase
    {
       typedef TBase<T> base_type;
       virtual void foo()
       {
          //tue etwas
       }
    }
    
    class Myclass : public TBase<MyTemplateClass*>
    {
        void foo()
        {
           base_type::foo();
        } 
    };
    

    ohne gewähr


Anmelden zum Antworten