我加入一个按钮,我含实例是这样的:如何封装一个C++ lambda,它可以删除它的“包含”对象吗?
pPromptDlg->addBtn("Okay", [](int &loopState) {
loopState = GlobalDefs::kGameRequestingBack;
}, true);//true because it handles the "back" button
我要得到它包含它的实例设置int
成员(到enum
值),表明它不再是必需的,但这是麻烦和潜在的危险,所以我更愿意尝试
pPromptDlg->addBtn("Okay", [](int &loopState) {
loopState = GlobalDefs::kGameRequestingBack;
delete pPromptDlg;
pPromptDlg = nullptr;
}, true);
然后我可以只检查if (pPromptDlg)
,独自离开。 我知道lambda有效地设置了一个类,很像enum
类,但enum
需要解决包含它们的定义的类,所以我猜测会有删除lambda中类的实例的副作用?
这是可能或只是懒惰?谢谢。
你的代码不能编译(除非'loopState'和'pPromptDlg'是全局的,这将是可怕的)。我猜这个代码应该在类方法中运行,而这两个变量是类的成员?在这种情况下,'[this]'而不是'[]'使得代码编译... – Yakk