【发布时间】:2017-05-09 13:00:10
【问题描述】:
我正在为 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 来生成不同类型的包装器,并且需要typedef 中的__closeure,因此它适用于VCL 表单项目。
__closure 有问题吗?我可以使用全局函数作为事件处理程序吗?
【问题讨论】:
标签: eventhandler c++builder-10.1-berlin