回调函数:在调用B函数之前需要先给B函数传一个函数A以便B函数在合适的时间再调用A,A需要包含B。
伪代码,大概是这个意思。回调函数,也是Qt的信号槽机制。
更通俗点说,就是你(A)定了一个十点的闹铃(B),十点的时候闹铃(B)把你(A)叫醒了。
// 定义一个函数指针用于传函数B
class AClass{
public:
// A调用B类函数中绑定一个函数ContextCalFunc以便B调用(B调用A的这个函数称为回调)
void someone(){
b.SetContextCalFunc(std::bind(&ContextCalFunc, this, std::placeholders::_1);
}
private:
void ContextCalFunc(){
cout<<"hhh";
}
private:
BClass b;
}
class BClass{
typedef std::function<void(void)> ContextCalFunc;
public:
// 把传进来的函数指针赋值给自己的函数指针
void SetContextCalFunc(ContextCalFunc _func){
context_func = _func;
}
// 当需要回调时调用A传过来的函数指针就可(例如鼠标点击后调用该函数指针)
void someone(){
context_func;
}
private:
ContextCalFunc context_func;
}