
Methodenzeiger abgeleiteter Klassen
Re: Methodenzeiger abgeleiteter Klassen
Aber wie calle ich dann die Methode? (this->*callback)(data); funktioniert nicht mehr, dann Derived ist inkompatibel mit Base<Derived>. Dabei habe ich ja einen Pointer auf eine Derived-Methode, aber rufe von einer Base<Derived> aus auf (also this ist Zeiger auf Base<Derived>) ... Weißt du was ich meine? 

Rage - ein "modernes" Rogue-like (C++11, SFML)
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Methodenzeiger abgeleiteter Klassen
Hmm... ja, ich denke schon...Glocke hat geschrieben:Aber wie calle ich dann die Methode? (this->*callback)(data); funktioniert nicht mehr, dann Derived ist inkompatibel mit Base<Derived>. Dabei habe ich ja einen Pointer auf eine Derived-Methode, aber rufe von einer Base<Derived> aus auf (also this ist Zeiger auf Base<Derived>) ... Weißt du was ich meine?
Und das klingt jetzt ein wenig plöd... aber das Problem löse ich in der Regel auch mit einem Cast... ^^
Der Unterschied an der Stelle ist jetzt eher, dass Du Dir mit T = Derived sehr sicher sein kannst, dass this ein Derived ist. Wichtig ist hier, dass die Casts hier im Template sind und nicht über das Progamm verteilt sind, sondern genau in dem Design-Pattern, was diese 'Hacks' in sich versammelt...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Methodenzeiger abgeleiteter Klassen
Also wäre es an der Stelle vertretbar zu casten? Ich hab dabei
im Auge, dann kann ich mit ptr, statt this aufrufen.
Code: Alles auswählen
Derived* ptr = static_cast<Derived*>(this)
Rage - ein "modernes" Rogue-like (C++11, SFML)
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Methodenzeiger abgeleiteter Klassen
Das ist eine der wenigen Stellen, wo ich caste - und auch genau so.Glocke hat geschrieben:Also wäre es an der Stelle vertretbar zu casten? Ich hab dabeiim Auge, dann kann ich mit ptr, statt this aufrufen.Code: Alles auswählen
Derived* ptr = static_cast<Derived*>(this)
Aber es spielt sich eben alles in Base< Derived > ab, wo this definitiv ein Derived sein soll (was leider durch die Sprache nicht garantiert ist, aber eben doch sehr "gewünscht" ist)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Methodenzeiger abgeleiteter Klassen
Okay, dann habe ich die Sache ab hier wieder im Griff, danke 

Rage - ein "modernes" Rogue-like (C++11, SFML)