Ami*_*ark 3 c++ lambda callback member-variables
我正在尝试实现一个将Lambda回调作为参数的c ++函数.问题是,回调是从同一个(被调用的)类中的另一个函数异步启动的.因此,我需要将Lambda存储在一个成员变量中,以便可以通过需要启动回调的异步函数来访问它.
我尝试了所有我能想到的方法来使用成员变量声明,设置和调用Lambda,但代码总是在赋值或调用中崩溃.
这是我正在尝试做的一个被剥离的版本.
声明功能:
void function(const std::function<void()>callback);
Run Code Online (Sandbox Code Playgroud)
从主代码调用函数:
myClass->function([](){cout << "Callback called";});
Run Code Online (Sandbox Code Playgroud)
如果我callback从内部执行function它工作正常,但我找不到一种方法将它存储在一个成员变量(例如m_callback)中,并从同一个类的另一个函数调用它.
这应该工作:
#include <functional>
#include <utility>
struct MyThing
{
std::function<void()> f_;
void SetCallback(std::function<void()> f) { f_ = std::move(f); }
void Action() { f_(); }
};
Run Code Online (Sandbox Code Playgroud)
用法:
#include <iostream>
MyThing thing;
thing.SetCallback([](){ std::cout << "Boo\n"; });
thing.Action();
Run Code Online (Sandbox Code Playgroud)