Código C++:
Ver original// v1
std::list<Persona>::iterator getRow(const std::string& xnom){
auto lambda = [&xnom]
( const Persona& p)
{ return p.nom == xnom; };
return std::find_if(lista.begin(),lista.end(),lambda);
}
// v2
std::list<Persona>::iterator getRow(const std::string& xnom){
auto it = lista.begin();
for( ; it!=lista.end(); ++it )
{
if( it->nom == xnom )
break;
}
return it;
}
// v3
Persona* getRow(const std::string& xnom){
Persona* ptr = nullptr;
for(auto& p : lista){
if(p.nom == xnom){
ptr = &p;
break;
}
}
return ptr;
}
No las he compilado luego no garantizo que estén libres de errores... pero deberían.
¿Qué problema tienes con los punteros? Trabajar con punteros es casi igual a trabajar con Java. Vale que en C++ hay algo más de curro pero tampoco es excesivo.