C++11之lambda回调设置与应用

本文探讨如何在C++11中利用lambda和function实现同步回调的效果。通过示例代码展示了在主函数中调用start时,lambda表达式在doSomething()执行后的onResult()中回调,确保了回调的正确执行。同时提到,异步回调可能因对象销毁导致回调失败的问题。
摘要由CSDN通过智能技术生成

       在程序中有时候我们需要实现回调效果,比如先设置监听,然后在后面具体执行完某个操作后再将该操作的结果通知给前面监听中。这种机制实际很常用,比如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;
};

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值