En mi clase tengo dos miembros privados:¿Puedo obtener un puntero a un valor repetidor actual
std::list<MyObject> objects;
MyObject *selecteObj;
Cuando se produce un evento que me gustaría recorrer la lista y ejecutar algún tipo de prueba que se solo rinde verdadero en uno de los artículos en la lista. Me gustaría guardar un puntero a ese elemento para usarlo en otro lugar.
std::list<MyObject>::iterator i;
for (i = objects.begin(); i!=objects.end(); ++i){
if (i->test())
selectedObj = i;
}
Otras ligas En otro método
if (selectedObj !=null)
tmpObj->doSomething();
Sin embargo, esto no funciona porque i
no es un puntero, su un iterador a pesar de que se puede tratar como un puntero a un MyObject
.
¿Es posible recuperar el puntero que el iterador está almacenando internamente para su uso en otro lugar?
¿Estoy pensando en esto incorrectamente?
¿Cuál es la forma correcta de lograr lo que estoy tratando de hacer?
Seguramente quiere decir 'std :: addressof (* i)', ¿no es así? El OP no preguntó cómo invocar el operador '&' del objeto ... –
@KerrekSB: Creo que quisiste decir 'std :: addressof' (en lugar de' std :: address_of'), ¿no? : P – Nawaz
@Nawaz: oh, ¿qué dije * I *? ;-) –