首页 > 其他 > 详细

1,Boost -> Bind

时间:2016-11-21 08:15:27      阅读:232      评论:0      收藏:0      [点我收藏+]
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>

#include <iostream>
using namespace std;
void dprint(int x,int y)
{
    cout << x << " " <<y <<endl;
}

class Bind_test
{
public:
    void setData(int x,int y)
    {
        _x = x;
        _y = y;
    }
    void printData()
    {
        cout << _x << " " <<_y <<endl;
    }
private:
    int _x;
    int _y;

};

void increnum(int &dg)
{
    dg++;
}

int main()
{
    boost::bind(&dprint,5,5)(); // 5,5
    boost::bind(&dprint,3,_1)(4);  // 3, 5
    boost::bind(&dprint,_1,_1)(2);  // 2, 2
    boost::bind(&dprint,_1,_2)(1,2);  // 1, 2
    boost::bind(&dprint,_2,_1)(1,2);  // 2, 1 ->函数参数对掉
    
    cout << "\nbind the class function\n";
    boost::shared_ptr<Bind_test> bclass(new Bind_test);
    boost::bind(&Bind_test::setData,bclass,1,2)();
    bclass->printData();

    Bind_test *bclass_02  = new Bind_test;
    boost::bind(&Bind_test::setData,bclass_02,2,3)();
    bclass_02->printData(); // 2 ,3
    delete  bclass_02;


    Bind_test bclass_03;
    boost::bind(&Bind_test::setData,&bclass_03,4,5)(); 
    bclass_03.printData(); // 4 ,5
    boost::bind(&Bind_test::setData,&bclass_03,_1,_1)(9); 
    bclass_03.printData(); // 9 ,9
    boost::bind(&Bind_test::setData,&bclass_03,_1,_2)(9,10); 
    bclass_03.printData(); // 9 ,10


    int dgNum = 0;
    boost::bind(&increnum,boost::ref(dgNum))(); // 类似C++11 Thread 里要传递引用std::ref(x)
    cout << dgNum <<endl;



    cin.get();
    return 0;
}

 

1,Boost -> Bind

原文:http://www.cnblogs.com/gearslogy/p/6083967.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!