C++11新特性之 std::bind 、std::placeholders、std::function

//std::bind  绑定
//std::placeholders  占位符
//std::function  函数
//这三个一般都是同时出现的

//例:
void onParseCallback(std::shared_ptr<void> param)
{
    //回调函数
}

//使用fun替代onParseCallback
auto fun = std::bind(&onParseCallback, placeholders::_1);

//使用宏替代onParseCallback,BIND_CALLBACK_3(onParseCallback)
#define BIND_CALLBACK_1(func)   std::bind(&func, this, placeholders::_1) //成员函数要加个this
#define BIND_CALLBACK_2(func)   std::bind(&func, this, placeholders::_1, placeholders::_2) //两个占位符,代表两个形参
#define BIND_CALLBACK_3(func)   std::bind(&func, placeholders::_1) //普通函数

//使用OperationDelegate代表void(std::shared_ptr<void>)类型的函数
typedef std::function<void(std::shared_ptr<void>)> OperationDelegate;

//例子:定义函数形参为OperationDelegate类型,使用时传入fun

class EqsParser
{
public:
    EqsParser(OperationDelegate callback);
    ~EqsParser();
}
EqsParser eqs_parser(onParseCallback);
或者
auto fun = std::bind(onParseCallback, placeholders::_1);
EqsParser eqs_parser(fun);
或者
EqsParser eqs_parser(BIND_CALLBACK_3(onParseCallback));

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值