将快速委托转换为STD功能

Converting Fast Delegate to std function

本文关键字:STD 功能 转换      更新时间:2023-10-16

我正在尝试将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
   }

这几乎是其工作原理的要旨。我知道这篇文章很旧