gpt4 book ai didi

C++11 Lambda 表达式作为回调函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:48 26 4
gpt4 key购买 nike

是否有任何 C++ GUI 工具包支持将回调函数定义为 C++11 lambda 表达式?我相信这是使用 C#(至少与 C++ 相比)编写基于 GUI 的程序的独特优势。对于将 lambda 表达式作为参数的函数,我应该使用什么类型签名?这些函数如何支持隐式转换?

最佳答案

问题第二部分的答案:您可以使用 std::function<Signature>其中 Signature = 例如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
});

关于C++11 Lambda 表达式作为回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10033142/

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