我正在为 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
我时出现错误
无法将 void(int) 转换为 TMyEvent
我重用TMyClass
来生成不同类型的包装器并且需要__closeure
intypedef
以便它与 VCL 表单项目很好地配合。
是__closure
问题吗?我可以使用全局函数作为事件处理程序吗?