0
我想使用boost ::绑定(我不知道这是否真的是我的问题的解决方案)创建一个包装,它有一个功能或两个参数,而包装只接受一个参数并将其他参数固定为某个常量值。我的功能看起来像如何使用boost ::绑定创建一个函数包装
double f(double a, double b)
{
return a/b;
}
或
double g(double b)
{
return 2*b; // b+b?
}
在我的代码我有一个功能,一个参数一个typedef:
typedef boost::function<double (double)> callback;
,我的想法是创建函数包装用此:
callback cb;
cb = boost::bind(f, _1, 2)(x);
这样我可以调用第三函数,使用在参数传递一个包装的函数:
double use(callback cb, double x, double y)
{
return cb(x0) - y0;
}
我具有约30的功能与一个或两个参数,和第一或第二必须是恒定的。这个常数是不知道use()
,但在use
实现的算法与每一个功能的工作原理。
当我尝试编译我的代码,我得到一个错误的行cb = boost::bind(f, _1, 2)(x);
:
'* f' cannot be used as a function
当我尝试直接使用绑定,如cout << boost::bind(f, _1, 2)(x);
,我没有得到一个错误。
我做了什么错在这里?
我加入了'(x)的'因为'提振:: bind'文档中所有的例子做。现在,当你指出这一点似乎很清楚,因为缺少的参数是通过使用'填写()',而不是当绑定完成闻名。它现在有用,谢谢! – Christoph 2012-02-25 09:35:07