一部コードメソッドハンドラの暗黙のキャスト?
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);
}
エラーここ
error C2664: 'Control::AddHandler' : cannot convert parameter 2 from 'void (__cdecl *)(EventObject *,MouseEventArgs *,void *)' to 'EventHandler'
エラーを生成するラインである:
control.AddHandler(MouseMoveEvent, mousemove_cb, 0);
説明
問題は、MouseEventArgsがEventArgsのサブクラスであることです。だから、自動キャスティングし、私のメソッドを正確な 'イベント引数'で登録する方法はありますか?
おそらく 'MouseEventArgs'がEventArgs''から派生したコードは、これを判断できるように、ヘッダが正しく設定されている? – acron