c++ - 如何保存 lambda 以供以后回调?

标签 c++ lambda c++11

如何修复下面的代码以存储 lambda 以便稍后调用它?

我目前得到的错误是field 'm_callback' has incomplete type

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;

这是从 Visual Studio 2010 完成的。

关于c++ - 如何保存 lambda 以供以后回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046397/

相关文章:

C++ lambda - 如何捕获函数参数

c++ - 将 Linux system() 调用命令的输出重定向到一个变量

c# - 如何将其转换为字典的字典

lambda - 如何在 C++0x 中重载用于组合函数的运算符?

c++ - 为包含 union 的结构定义 `swap` 方法;怎么做?

c++ - 在C++中使循环变量成为常量

c++ - 使用分配器 C++ 创建元组

c++ - 使用 CLion 调试 Node 插件

Java - 为外部库中的类定义公共(public)接口(interface)

c++ - 提供 protected 模板成员函数的公共(public)特化