我有一個指針向量。我想爲每個元素調用一個函數,但該函數需要引用。有沒有簡單的方法來解除元素的引用?使用for_each和boost :: bind指針向量
例子:
MyClass::ReferenceFn(Element & e) { ... }
MyClass::PointerFn(Element * e) { ... }
MyClass::Function()
{
std::vector< Element * > elements;
// add some elements...
// This works, as the argument is a pointer type
std::for_each(elements.begin(), elements.end(),
boost::bind(&MyClass::PointerFn, boost::ref(*this), _1));
// This fails (compiler error), as the argument is a reference type
std::for_each(elements.begin(), elements.end(),
boost::bind(&MyClass::ReferenceFn, boost::ref(*this), _1));
}
我可以創建一個骯髒的小包裝,需要一個指針,但我想必須有一個更好的辦法?
你有使用'boost :: ref(* this)'的原因嗎?我只使用:boost :: bind(&MyClass :: ReferenceFn,this,_1),它工作正常。 – 2010-09-21 11:57:48