gpt4 book ai didi

C++ lambda/回调弹出窗口?

转载 作者:行者123 更新时间:2023-11-30 05:06:27 24 4
gpt4 key购买 nike

我有一个执行此操作的弹出系统 (GUI):

// creates popup with two possible answer-buttons
if (timeToEat())
callPopup(ID_4, "What to eat?", "Cake", "Cookies!");

//elsewhere in code i check for key presses
if (popupAnswered(ID_4,0)) // clicked first button in popup
eatCake();

if (popupAnswered(ID_4,1)) // clicked second button in popup
eatCookiesDamnit();

我可以使用某种 lambda/回调来安排它,如下所示。这样该功能“保留”并且可以在按下按钮时激活(返回值)。

谢谢!

if (timeToEat())
callPopup("What to eat?", "Cake", "Cookies!"){
<return was 0 :> eatCake(); break;
<return was 1 :> eatCookies(); break;
}

最佳答案

您可以向 callPopup 添加一个延续参数:

void callPopup(int id, std::function<void(int)> f)
{
if (something)
f(0);
else
f(1);
}

//...

callPopup(ID_4, [](int x) { if (x == 0) eatCake(); });

或者你可以添加另一个函数层并使用返回值:

std::function<void(std::function<void(int)>)> 
callPopup(int id)
{
return [](std::function<void(int)> f) { f(something ? 0 : 1); }
}

// ...
callPopup(ID_4)([](int x) { if (x == 0) ... ;});
// or
void popupHandler(int);
auto popupResult = callPopup(ID_4);
// ...
popupResult(popupHandler);

关于C++ lambda/回调弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901447/

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