将快速委托转换为STD功能
Converting Fast Delegate to std function
我正在尝试将fastdelegate转换为std ::函数,但是很难理解语法。
这是代表库:http://www.codeproject.com/articles/7150/member-function-pointers-and-pointers-and-the-fastest-possible
和我要转换的代码:
typedef shared_ptr<IEventData> IEventDataPtr;
typedef fastdelegate::FastDelegate1<IEventDataPtr> EventListenerDelegate;
//some code to find the event
EventListenerDelegate listener = (*it);
listener(pEvent); // call the delegate
到目前为止,这无效:
typedef std::function<std::shared_ptr<IEventData>> Functor;
Functor listener = (*it);
listener(pEvent); // call the delegate
这可能不是一个完整的答案,因为我不确定fastdelegate库支持什么,除了提供回调功能之外,还有什么。那里的原始代码来自Mike Shaffry&amp;戴夫·格雷厄姆(Dave Graham)。
因此,我可能会缺少书籍说FastDelegate库可以附加成员变量的部分。因此,由于您在IEventData作为参数中具有无效函数,因此您所有的回调功能都是相同的。
typedef std::function<void(IEventData)> Functor;
Functor listener = (*it);
listener(pEvent);
然后在解决方案中的其他地方定义的是实际的"函数",它只是STD ::函数的Typedef。例如:
void GameCode::DelegateFunction(IEventData){
//do stuff with event
}
这几乎是其工作原理的要旨。我知道这篇文章很旧
相关文章:
- std ::功能作为默认参数的功能
- 复制std ::功能多么昂贵
- 将多种类型传递给STD ::功能C
- STD ::功能,字面类型和模板
- 使用STD ::功能时,编译器无法推断类型
- 调用STD ::功能,并带有变体类型列表
- STD ::功能的类型扣除额
- STD功能替换向量中的字节范围
- 如何管理STD ::功能的STD ::向量
- 绑定std ::功能错误
- 将成员函数和lambdas传递给std ::功能
- std ::功能和错误:无需匹配函数
- 如何通过C通过C API传递std ::功能
- 将std ::函数铸造到其他std ::功能并调用它
- 如何将std ::功能包装器转换为变异功能
- rvalue参考绑定到std ::功能类型的LVALUE
- lambdas不使用功能接受std ::功能
- 虚拟方法与std ::功能成员变量在性能方面
- sTD ::功能的替代方案,用于收集可可的功能
- 为什么不能将std :: stol转换为std ::功能对象