我有一个指针向量。我想为每个元素调用一个函数,但该函数需要引用。有没有简单的方法来解除元素的引用?使用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