如何保存lambda以供以后回调
How do I save a lambda for later callback?
我如何修复下面的代码来存储lambda,以便我可以在以后调用它?
我目前得到的错误是字段'm_callback'具有不完整类型。
class Foo
{
public:
Foo() { }
~Foo() { }
template< typename FuncT >
void setCallback( FuncT&& callback )
{
m_callback = callback;
}
private:
auto m_callback; // this line is broken
};
int main(int argc, char** argv)
{
Foo foo;
foo.setCallback( [] (int x){ return true; } );
return 0;
}
auto
关键字不能这样使用。我建议使用如下命令:
#include <functional>
std::function<bool (int)> m_callback;
auto
关键字只能与初始化表达式结合使用。
所以…如此:
auto callback = [](int x){ return x == 0; };
…但这不是:
auto callback;
callback = [](int x){ return x == 0; };
我建议您使用function
之类的东西,带有特定的签名来表示回调
相关文章:
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 使用带有闭包的 lambda 的回调
- 通过实用程序 fn 将捕获的 lambda 传递给 C 样式回调 - 错误
- C++模板函数中,指定回调函子/lambda 的参数类型,同时仍允许内联?
- 如何成功地将函数对象(或lambda)传递给trackbar回调的第二个参数(void*)
- ROS:在nodehandle.subscribe中使用lambda作为回调
- 如何定义与将 Lambda 与捕获作为回调一起使用兼容的函数指针
- lambda回调中Android Cocos2D-X应用程序上的SEG故障
- 在库中的 C++17 中强制内联回调 (lambda)
- 如何使用C lambda将成员功能指针转换为普通功能指针,以用作回调
- std::函数,带有 SDL 事件回调的 lambda 错误
- 将lambda传递到lambda回调参数
- C lambda/回调弹出窗口
- C lambda回调为触发事件
- 允许 lambda/回调函数的多个签名作为模板参数
- 读取 Lambda 回调后的访问冲突
- 用C++lambda包装C回调,可以使用模板多态性
- 带有lambda的C++回调失败,返回bad_function_call
- 如何将C++lambda传递给需要函数指针和上下文的C回调
- 如何避免在调用异步函数进行 lambda 回调时出现额外的副本