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