我有一個簡單的類是這樣的:使用std :: bind2nd與引用
class A
{
public:
void f(const int& n)
{
std::cout<<"A::f()" << n <<"\n";
}
};
,我試圖用這樣的:
std::vector<A> vec;
A a;
vec.push_back(a);
std::for_each(vec.begin(), vec.end(), std::bind2nd(std::mem_fun_ref(&A::f), 9));
但是,當我編譯代碼我得到以下錯誤內部的功能的頭文件某處:
錯誤C2529:「_right」:參照 參考是非法
如果我刪除參數f()中的引用,它編譯得很好。我該如何解決這個問題?我不想刪除引用,因爲在我的真實代碼中複製對象的代價非常高。另外,我沒有使用提升。
您是否檢查了此鏈接? http://www.velocityreviews.com/forums/t290345-stdmemfunref-and-bind2nd-question。html – vpram86 2009-09-23 08:11:19