本文主要是介绍【C++基础】将A类的一个成员函数传给B类作回调函数使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
要使用回调函数的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);
这篇关于【C++基础】将A类的一个成员函数传给B类作回调函数使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!