Am Montag, dem 02. Dezember 2002 um 21:35:01, schrieb Ulf Lorenz:
Ich speichere die callbacks ab und moechte sie jetzt, ohne zu wissen, welche Klasse sich unter "obj" verbirgt , ausfuehren. Das sollte in etwa so gehen:
obj->myfunc(mystring);
Der Compiler beschwert sich jetzt, dass Object keine Funktion vom Typ callb_func hat.
Entweder musst du die Funktion auch als virtuelle Funktion zur Basisklasse hinzufügen oder die änderst die Hierarchie so, dass zwischen Basisklassen und abgeleiteten Klassen eine Hilfsklasse (Caller) eingeführt wird oder du arbeitest mit Mehrfachvererbung und rufst den Callback über einen crosscast auf:
dynamic_cast<Caller*>(obj)->myfunc(mystring);
Außerdem gibt es noch das Visitor-Pattern, bei dem du die Klassenhierarchie unter Umständen gar nicht mehr ändern brauchst...
Torsten