我正在写一个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
)?我可以使用全局函数作为事件处理程序吗?
我会尽快找回来...... –