将 std::function 的参数作为参数提供给新对象的前向参数
Forward arguments of std::function given as an argument to new object
这是我的问题:我想创建一个std::function
对象,它将"提取"其参数的一部分并将其传递给不同的std::function
对象。
我需要这样的函数:
std::function<void(Event)> MakeEventCallback(std::function<void(std::shared_ptr<Input>&)>);
调用此潜在函数:
some_global_callbacks.push_back(MakeEventCallback(
[](std::shared_ptr<Input>& input){ /*do stuff with input object;*/ input->DoStuff();}
));
some_global_callbacks
最终会像这样处理:
auto event = createEvent(...);
for (auto eventCallback : some_global_callbacks)
{
eventCallback(event);
}
Event
的构造函数采用std::shared_ptr<Input>
,也可以使用Event::getOriginalInput
从Event
中检索。
我希望调用eventCallback
以调用具有适当输入传递给MakeEventCallback
的原始callback
。
根据我们在聊天中的讨论,我相信您正在寻找以下内容:
std::function<void(Event&)> MakeEventCallback(std::function<void(std::shared_ptr<Input>&)> callback)
{
return [callback](Event& ev) { callback(ev.getOriginalInput()); };
}
这将创建一个"包装器"回调,它接受一个Event
,从该Event
中提取Input
,并将Input
传递给原始callback
。
相关文章:
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Arduino C++在构造函数中用参数声明对象数组
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- C++ 类对象作为函数参数
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 如何编写将展开以定义具有模板参数的对象的宏
- C++类对象 - 遍历基于参数的对象
- 将指针传递到成员的指针,从模板参数包到函数对象
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 是否可以获取成员函数模板参数的拥有对象?
- C++多参数对象创建
- 在不创建参数对象的情况下解析constexpr函数
- 推断模板参数对象成员的类型
- 如何解析c++ v8中的参数对象
- 当默认参数对象被销毁时
- 为什么函数不能更改其参数对象的地址/引用值?