Einige CodeImplizites Casting für Methodenhandler?
typedef void (*EventHandler) (EventObject* sender, EventArgs* args, void* closure);
class Control
{
void AddHandler(int eventId, EventHandler handler, void* data)
}
class SubControl
{
static void mousemove_cb(EventObject* sender, MouseEventArgs* calldata, void* closure);
}
Der Fehler
error C2664: 'Control::AddHandler' : cannot convert parameter 2 from 'void (__cdecl *)(EventObject *,MouseEventArgs *,void *)' to 'EventHandler'
Hier ist die Linie, die den Fehler erzeugen:
control.AddHandler(MouseMoveEvent, mousemove_cb, 0);
Beschreibung
Das Problem ist, dass MouseEventArgs eine Unterklasse von EventArgs ist! Gibt es also eine Möglichkeit, ein automatisches Casting durchzuführen und meine Methode mit den genauen 'Ereignisargumenten' zu registrieren?
Vermutlich 'MouseEventArgs' leitet sich von' EventArgs' und Ihre Header so richtig, dass der Code aufgebaut dies bestimmen kann? – acron