Double-Dispatch und Vererbung



  • Hi,

    wer den Double-Dispatcher aus Loki/Modern C++ Design kennt, kennt sicherlich auch das Vererbungsproblem - also wenn ich (Derived, Derived) dispatche und einen Handler für (Base, Base) habe, so kann aufgrund der gespeicherten statischen Typinfos der Dispatch nicht aufgelöst werden.

    Alexandrescu schreibt/schrieb, dass er sich sicher ist, dass eine Lösung dafür existieren muss, auch wenn ihm noch nichts eingefallen ist.

    Mich würde mal interessieren, ob es inzwischen Lösungen für das Vererbungsproblem beim Double-Dispatch gibt (das Buch ist ja immerhin schon etwas älter). Bisher konnte ich etwas in der Art nicht finden.

    Mir ist bis dato auch nichts eingefallen, wie man das Problem gut lösen könnte, zumal man dann noch den "most viable dispatch" finden müsste, insbesondere beim verallgemeinerten Multidispatch. Wer Ideen hat, eine Grundsatzdiskussion würde mich auch interessieren. 🙂

    Viele Grüße



  • *push*

    Weiß niemand bescheid darüber?

    Oder hat vielleicht gute Ideen, wie man das umsetzen könnte? Das wäre doch vielleicht ein reizvolles Projekt für's Magazin. 🙂

    Meine Überlegungen scheitern an dem Punkt, wo ich aus nur dynamischen Typinfos Vererbungsbeziehungen herstellen müsste - das geht wohl schlecht.
    Ich würde allerdings auch nur Lösungen bevorzugen, die die beteiligten Klassen nicht verändern müssen. Außerdem sollte möglichst die Aufrufreihenfolge der Registrierungen egal sein.



  • Ich glaube dass viele Leute hier die Loki Implementierung nicht kennen werden. Und daher keinen Plan haben worum es da genau geht.



  • Naja, Modern C++ Design haben ja sicherlich einige gelesen. Es gibt in den Artikeln ja sogar einen generalisierten Multi-Dispatcher, von daher war ich mal davon ausgegangen... 🙂 Mit einer Flut an Antworten habe ich aber auch nicht gerechnet *g*

    Das ganze allerdings zu erläutern, wäre auch etwas langatmig 😕



  • ich selber habe noch von keiner loesung gehoert. aber da ich mich nicht wirklich intensiv damit beschaeftigt habe, kann eine moegliche loesung spurlos an mir vorbei gegangen sein.

    ich nehme an es geht den meisten hier so. es hat keiner von einer loesung gehoert aber beschwoeren dass sie noch nicht gefunden wurde, wuerden sie trotzdem nicht. zumindest geht es mir genau so.


Anmelden zum Antworten