是否有任何 C++ GUI 工具包支持将回调函数定义为 C++11 lambda 表达式?我相信这是使用 C#(至少与 C++ 相比)编写基于 GUI 的程序的独特优点。对于采用 lambda 表达式作为参数的函数,我应该使用什么类型签名以及它们如何支持隐式转换?
问题第二部分的答案:您可以使用std::function<Signature>
where Signature
= e.g. void (int)
或者 - 如果 lambda 不采用闭包 - 好的旧方法void (Foo*)(int)
方法,因为没有闭包的 lambda 必须可转换为正确的函数类型。因此,例如调用带有签名的方法:
void AddHandler(std::function<void (int)> const &);
可能看起来像这样:
myObject.AddHandler([&](int _) {
// do something and access captured variables by reference
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)