【C++基础】将A类的一个成员函数传给B类作回调函数使用

2023-12-14 15:40:07

要使用回调函数的B类 CallObj

在一个 CallObj 中定义:

定义了一个别名CallbackFunc,该别名表示一个接受一个double参数并返回void的函数指针或函数对象。

using CallbackFunc = std::function<void(double)>;

成员变量
在 CallObj 类中声明了一个成员变量 callbackFunction,它的类型是 CallbackFunc,用于保存回调函数。

CallbackFunc callbackFunction;

函数及实现
提供了一个公共成员函数 setProcessFunc,该函数接受一个 CallbackFunc类型的参数,并将其赋值给 callbackFunction 成员变量。

void setCallbackFunc(CallbackFunc callback);

void CallObj::setCallbackFunc(CallbackFunc callback)
{
	callbackFunction = callback;
}

传入回调函数的A类

使用:
定义要传入回调函数类 CallObj 的对象

CallObj* cbObj = new CallObj();

使用std::bind将一个成员函数 processFunc 与当前对象(this)绑定,创建了一个函数对象func。
这里使用了std::placeholders::_1来占位实际的回调函数参数。
返回值类型为:std::function<void(double)>

auto func = std::bind(&CallObj::processFunc, this, std::placeholders::_1);

调用setProcessFunc函数,将绑定后的函数对象 func 作为参数传递给 setProcessFunc,从而将回调函数注册到 CallObj 类的实例中。

	cbObj->setCallbackFunc(func);

在这里插入图片描述

文章来源:https://blog.csdn.net/yulinxx/article/details/134994548
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。