C++回调的几种方式

本文介绍了C++中两种常用的回调实现方式:一是通过设置接口sink,即设计消息接口类,需要回调的类继承并实现接口,然后注册给管理类;二是设置函数指针,类似C的风格,保存函数地址以供后续调用。这两种方式在C++开发中都有广泛应用。
摘要由CSDN通过智能技术生成

自己平时常用到的C++回调方式主要为两类

  1. 通过设置函数指针的方式
  2. 通过集成接口的方式(Sink下沉)

一. 设置接口sink的方式

一般都是由一个消息接口类,作为回调,需要处理返回回调的信息的类,只需要继承接口类,并实现对应的方法即可。初始化时,只需要将子类设置下去,待任务完成时,就可以实现回调。
简单的模仿一下文件传输,ITaskCallback为消息回调接口,需要该消息回调的类,只需要继承该接口,即可。例如FTPTask。

#include <iostream>
#include <random>
#include <ctime>
class ITaskCallback
{
public:
	virtual void on_process_result(std::string data) = 0;
};

//模拟任务线程的处理,例如ftp,传入FTPTask,设置sink下沉回调。
class TaskProcessing 
{
public:
	TaskProcessing(ITaskCallback* callback) : _callback(callback)
	{};

	void set_callback(ITaskCallback* callback)
	{
		_callback = callback;
	};

	//模拟将文件传输完成
	void do_task()
	{
		//当文件传输完成
		if (_callback)
		{
			srand((int)time(NULL));
			if (rand() & 1)
			{
				_callback->on_process_result(std::string("ftp succeed
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值