Tengo un vector de punteros. Me gustaría llamar a una función para cada elemento, pero esa función toma una referencia. ¿Hay una forma simple de desreferenciar los elementos?Usando for_each y boost :: bind con un vector de punteros
Ejemplo:
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));
}
que podría crear un pequeño envoltorio sucia que toma un puntero, pero pensé que tenía que haber una mejor manera?
¿Hay algún motivo por el que esté utilizando 'boost :: ref (* this)'? Solo uso: boost :: bind (& MyClass :: ReferenceFn, this, _1) y funciona bien. –