您的位置:首页 > 其它

boost::function的简单用法

2014-06-26 17:04 429 查看
#include <iostream>

#include "boost/function.hpp"

#include "boost/bind.hpp"

using namespace std;

class Foo

{

public:

    void methodA()

    {

        cout<<" Foo.methodA"<<endl;

    }

    void methodInt(int a)

    {

        cout<<" methodInt: a = "<<a<<endl;

    }

};

class Bar

{

public:

    void methodB()

    {

        cout<<" Bar.methodB"<<endl;

    }

};

void fun1( int a )

{

    cout<<" fun1 : a = "<<a<<endl;

}

void main()

{

    boost::function<void()> f1; // 无参数,无返回值

    Foo foo;

    f1 = boost::bind(&Foo::methodA, &foo);

    f1(); // 调用 foo.methodA();

    f1 = boost::bind(&Foo::methodInt, &foo, 42);

    f1(); // 调用 foo.methodInt(42);

   

    Bar bar;

    f1 = boost::bind(&Bar::methodB, &bar);

    f1(); // 调用 bar.methodB();

   

    boost::function<void(int)> f2; // int 参数,无返回值

    f2 = boost::bind(&Foo::methodInt, &foo, _1);

    f2(53); // 调用 foo.methodInt(53);

    boost::function<void(int)> myFun(&fun1); //对于普通函数

    myFun(12);

    system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: