我正在寫一個C++ Builder VCL類的DLL包裝器。這是問題的一個非常簡單的例子:使用非類成員作爲事件處理函數
typedef void __fastcall (__closure *TMyEvent)(int index);
class TMyClass {
public:
TMyEvent OnMyEvent;
};
void __fastcall myEventHandler(int index) { }
TMyClass myClass;
myClass.OnMyEvent = myEventHandler;
...這裏的問題是: 通常myEventHandler
是另一個類中定義的,但在這裏它被定義爲一個全球性的功能。當我嘗試分配myEventHandler
到myClass.OnMyEvent
我得到「無法轉換無效(int)以TMyEvent」
我重用TMyClass產生不同類型的包裝,並需要在typedef
的__closeure
所以它與VCL形式的項目運作良好。
這是問題(__closure
)?我可以使用全局函數作爲事件處理程序嗎?
我會盡快找回來...... –