在程序中有时候我们需要实现回调效果,比如先设置监听,然后在后面具体执行完某个操作后再将该操作的结果通知给前面监听中。这种机制实际很常用,比如window底下的消息机制,Qt中的信号槽的机制都有类似的效果。但是在C++中并没有类似机制,那么我们应如何实现呢?
实际上在C++中我们可以使用模板、函数指针、抽象类、和lambda就可实现回调的效果,本文重点讲解如何使用lambda和function在同步线程中实现回调的效果。关于lambda介绍可参我前面的博客:https://blog.csdn.net/King_weng/article/details/100612476
一、同步回调
1、LambdaClass.h
#include <functional>
#include <iostream>
using namespace std;
class LambdaClass
{
public:
LambdaClass() {}
~LambdaClass() {}
void start(string str);
void doSomething(string str);
void setResult(const function<void(const bool &)> &cb);
void onResult(const bool &isOK);
private:
function<void(const bool &isOK)> _cbResult;
};