本篇主要說明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