【发布时间】:2011-05-15 04:57:16
【问题描述】:
我正在进入一个对我来说很陌生的领域,但基本上我需要在 C++ 中实现回调。我正在为自己设计一个工具包来简化我的生活。基本上它是一个 .dll 插件,它将向我的其他 .dll 插件公开很多功能。
其中一个函数是 HookEvent(const char *event_name, void *callback),它允许我挂钩被触发的不同事件。这是一个例子......
Example_Plugin1.dll 执行 HookEvent("player_spawn", &Plugin1::Event_PlayerSpawn); Example_Plugin2.dll 执行 HookEvent("player_spawn", &Plugin2::Event_PlayerSpawn);
我需要找出最好的(最好是最简单的)方法来设置一个可以很好地解决这个问题的回调系统。我已经阅读 C++ 回调几个小时了,发现了很多不同的方法。
我认为最简单的方法是制作一个模板,然后使用 typedef bool (ClassName::*EventHookCallback)(IGameEvent, bool);在那之后,我有点迷茫。
我还了解到委托或 .NET 样式的事件系统是其他可能的方法。我已经有些糊涂了,所以我不想再糊涂了,但觉得值得一问。
这是我正在阅读的 C++ .NET 样式事件系统的链接。 http://cratonica.wordpress.com/2010/02/19/implementing-c-net-events-in-c/
那你们有什么建议呢?任何关于实施它的提示将不胜感激。
【问题讨论】:
标签: c++ events delegates callback handler