问题描述
我目前正在尝试用 C++ 实现一个事件管理器。原则上,它将事件类型 (uint64_t
) 映射到 boost::function<void(const IEventDataPtr&)>
列表。
用户可以通过调用 EventManager::add(boost::function<void(const IEventDataPtr&)> delegate,EventType event)
来注册新的监听器。但是,用户可能希望稍后取消注册其侦听器。这将涉及找到这个特定的函数对象并将其从相应的列表中删除。
我知道 boost::function
是 generally not comparable。在调试器中玩弄时,我发现通过比较 functor.members.func_ptr
我实际上可以做我想做的事情。对于 lambda、boost::bind
、静态成员函数和常规函数,它按预期工作。 这样做安全吗?有什么问题吗?
我的期望是相同的对象(即相同的 lambda、函数等)具有相同的地址,不与其他人共享。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)