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 istclass 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