将类成员函数变为普通函数

最近遇到一个需求,拿到一个库里面的接口注册一个回调函数,但是该注册函数的形式为

typedef void(*FUNC)(void *msg);
void regListener(FUNC callbak);

 即需要一个普通的函数

但是我们需要在类内解析回调传过来的数据

void ClassName::interface(void *msg){}

 直接将interface传给 regListener 则会报错。解决:

//1. 定义一个普通的函数,调用一个function可调用对象
std::function<void(void*)> function_interface;
void Func_interface(void *msg){
    function_interface(msg);
}
//2. 类内 function 绑定类成员函数
ClassName::ClassName(){
    function_interface = std::bind(&ClassName::interface,this, std::placeholders::_1);
    //3. 注册
    regListener(Func_interface);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值