So I want to create a function like:
void proxy_do_stuff(boost::bind return_here)
{
开发者_如何转开发 return_here(); // call stuff pased into boost::bind
}
And I could call it like :
proxy_do_stuff(boost::bind(&myclass::myfunction, this, my_function_argument_value, etc_fun_argument));
How to do such thing?
The return type of boost::bind is of type boost::function. See below:
void proxy_do_stuff(boost::function<void()> return_here)
{
return_here(); // call stuff pased into boost::bind
}
#include <boost/bind.hpp>
template<typename T>
void proxy_do_stuff(T return_here)
{
return_here(); // call stuff pased into boost::bind
}
struct myclass
{
void myfunction(int, int)
{
}
void foo()
{
int my_function_argument_value = 3;
int etc_fun_argument= 5;
proxy_do_stuff(boost::bind(&myclass::myfunction, this, my_function_argument_value, etc_fun_argument));
}
};
int main()
{
myclass c;
c.foo();
return 0;
}
精彩评论