boost::bind 方法浅析
来源:互联网 发布:男生轻微sm知乎 编辑:程序博客网 时间:2024/05/21 19:25
1.使用方法:
boost bind 方法一般需要和boost function配合使用,因为用boost bind 之后返回的会是一个boost function。
boost function:
boost::function<void(int)> f; //声明了一个无返回值,参数为int的boost function。
1.绑定普通函数
void fun(int a,int b);
f = boost::bind(&fun,1,_1);//_1表示预留一个参数位置。
f(2); // 相当于 fun(1,2)
boost::function<void(int,int)> f; // 声明了一个无返回值,参数为int,int的boost function
f = boost::bind(&fun,_1,_2); // _1,_2预留了两个参数的位置。
f(2,3);//相当于 fun(2,3)
2.绑定成员函数
class A {
void test(int a, int b);
};
A a;
typedef boost::function<void(int)> F;
F f = boost::bind(&A::test,&a,_1,_2); //第一个参数为成员函数,第2个参数为要绑定的类指针。如果在类内部,可以使用this,使用方法同 绑定普通函数
2.bind作用
使用bind可以改变代码结构,最常见的用途就是用作回调函数。列如:
class B {
public:
typedef boost::function<void(int)> callback;
void testB(int a,const callback& cb) {
cb(a);
};
};
class A {
public:
void testA(int a, int b) {
b.testB(a,boost::bind(&A::callbackFuc,this,b,_1));
}
void callbackFunc(int a, int b) {};
private:
B b;
};
上述代码 就实现了一个简单的回调。A类中testA调用了B类的testB方法,而testB又回调A的callbackFunc方法,完成回调。
其中testB有2个参数,一个是int a,一个是函数指针boost function。testA中用boost bind 绑定了自己的成员函数callbackFunc,并将b当做第一个参数传给
callbackFunc,并预留了一个将会在testB中传入,这样非常的方便。
- boost::bind 方法浅析
- boost bind 实现方法
- boost bind 实现方法
- boost bind 实现方法
- boost bind 实现方法
- boost.bind
- boost::bind
- boost::bind
- boost::bind
- Boost::bind
- Boost::bind
- bind -boost
- boost::bind()
- boost bind
- boost::bind
- boost::bind
- boost::bind
- boost bind
- 数据库索引的实现原理
- 连接oem,忘记sys密码
- 利用CSS、JavaScript及Ajax实现图片预加载的三大方法
- 设计一个算法,从顺序表中删除所有值为x的元素
- PostMessage发送字符串和结构体
- boost::bind 方法浅析
- IPSEC主动模式
- 代码加打印技巧
- cocos2d-x将CCSprite转为黑白色
- 判断整数序列是不是二元查找树的后续遍历结果
- 和为n的连续正数序列
- 关于修改sys口令和口令文件之间关系的实验
- Asp.net Ajax在插入数据出现了乱码
- 将数字转化为汉字表达