gpt4 book ai didi

不同类中的 C++ 回调

转载 作者:太空狗 更新时间:2023-10-29 23:01:29 25 4
gpt4 key购买 nike

这是我的问题,我有两个类,MainMenuState 和 MainMenuUI。 MainMenuState 有一个 MainMenuUI 成员。基本上,我想在 MainMenuUI 中进行所有 GUI 初始化

void GameUI::MainMenuUI::initUi()
{
std::shared_ptr<GUI::Label> testLabel2(new GUI::Label);
testLabel2->setFont(m_font);
testLabel2->setText("TestLabel");
testLabel2->setFontColor(sf::Color(0, 0, 0));
testLabel2->setFontSize(16);
testLabel2->setRelativePosition(GUI::Position::RIGHT, GUI::Position::BOTTOM, -5, -5);
addComponent("label2", testLabel2);



std::shared_ptr<GUI::MainMenuPanel> mainMenu(new GUI::MainMenuPanel(font));
mainMenu->setRelativePosition(GUI::Position::MIDDLE, GUI::Position::MIDDLE);
mainMenu->open();
// Problem !---------------
/*mainMenu->setPlayButtonCallback([this]{
requestStackPop(); // This method belongs to MainMenuState's base class and is protected
requestStackPush(States::AnotherState); // This method belongs to MainMenuState's base class and is protected
});
mainMenu->setExitButtonCallback([this]{
requestStackPop(); // This method belongs to MainMenuState's base class and is protected
});*/
//--------------------
addComponent("mainMenu", mainMenu);
}

如您所见,问题是“如何直接在我的 MainMenuUI 类中设置回调?”。 friend 类对我有帮助吗?

谢谢

最佳答案

如果您不想向世界公开这些方法,您可以创建一个类来访问这些方法并提供此类接口(interface)并将该类的实例作为参数传递给回调:

mainMenu->setPlayButtonCallback([this](Accessor acc){
acc.requestStackPop();
acc.requestStackPush(States::AnotherState);
});

关于不同类中的 C++ 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31053716/

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