gpt4 book ai didi

c++ - 作为新对象的参数给出的 std::function 的转发参数

转载 作者:行者123 更新时间:2023-11-28 05:17:19 25 4
gpt4 key购买 nike

这是我的问题:我想创建一个 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 中检索到使用 Event::getOriginalInput .

我想要调用 eventCallback调用原始 callback传递给 MakeEventCallback使用适当的输入。

最佳答案

基于我们的 discussion in chat ,我相信你正在寻找这个:

std::function<void(Event&)> MakeEventCallback(std::function<void(std::shared_ptr<Input>&)> callback)
{
return [callback](Event& ev) { callback(ev.getOriginalInput()); };
}

这将创建一个“包装器”回调,它接受一个 Event,从该 Event 中提取 Input,并传递 输入到原始回调

关于c++ - 作为新对象的参数给出的 std::function 的转发参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42365192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com