本篇主要说明boost function的使用例子
设计头文件:
#include <boost/function.hpp>
基本的function对象例子
boost::function<int(const char*,&int)> f;
代码该函子对应的函数其返回值为int类型,她有个2个参数分别为const char*和&int类型
一个简单的例子如下所示:
#include <iostream>
#include <boost/function.hpp>
inline int Sum(const int a,const int b)
{
return a + b;
}
int main()
{
boost::function<int(const int,const int)> sum_ptr;
sum_ptr = ∑
std::cout<<"1+2=:?"<<sum_ptr(1,2);
system("PAUSE");
return EXIT_SUCCESS;
}
如果对应的函数为类的成员函数则其使用例子可参考下面的说明:
#include <iostream>
#include <boost/function.hpp>
#include <functional>
struct Adder
{
Adder(int val):value(val){}
int Add(int x){return x*value;}
int value;
};
int main()
{
//! 对应函数返回值int参数为int
boost::function<int(int)>f;
Adder add(7);
//! 绑定成员函数到boost::function<>
f = std::bind1st(std::mem_fun(&Adder::Add),&add);
std::cout<<f(5)<<std::endl;
system("PAUSE");
return EXIT_SUCCESS;
}
对于仿函子则可以这样做:
#include <iostream>
#include <boost/function.hpp>
#include <functional>
struct Div
{
float operator()(int x, int y)const
{
return((float)x)/y;
}
};
int main()
{
//! 2
boost::function<float(int,int)> div;
div = Div();
std::cout<<div(1,2)<<std::endl;
system("PAUSE");
return EXIT_SUCCESS;
}
//! ccsdu2004