Hola eferion, gracias por responder verás usé un remove_if por lo que me dijiste, pero ahora estoy un poco confundido:
Código C++:
Ver original#include <algorithm>
#include <list>
#include "Persona.h"
#ifndef CONTRPERSONAS_H
#define CONTRPERSONAS_H
using namespace std;
std::list<Persona>lista;
static int maxIdP = 0;
int getMaxIdP(){
return ++maxIdP;
}
bool check(const Persona& p){
int num_reg = std::count_if(lista.begin(),lista.end(),[&p](const Persona& p2){
return p2.nom == p.nom;
});
return num_reg > 0;
}
Persona* getRow(std::string xnom){
Persona* toReturn = NULL; // inicialización de puntero nulo
auto it = std::find_if(lista.begin,lista.end,[&xnom](const Persona& p){
return p.nom == xnom;
}); //esta línea da error - no matching function for call to ....
if( it != lista.end())
toReturn = &(it); // it
return toReturn;
}
Persona* getRow(int xid){
Persona* toReturn = NULL; // inicialización de puntero nulo
auto it = std::find_if(lista.begin,lista.end,[&xid](const Persona& p){
return p.id == xid;
}); //esta línea da error - no matching function for call to ....
if( it != lista.end())
toReturn = &(it); // it
return toReturn;
}
bool create(Persona p){
if(check(p)){
return false;
}
else{
lista.push_back(p);
return true;
}
}
bool update(Persona p){ }
void deleted(Persona p){
if(check(p)){
lista.remove_if(lista.begin(),lista.end(),[&p](const Persona& p2){
return p.id == p2.id;
}); //esta línea da error - no matching function for call to ....
}
}
std::list<Persona> read(){
return lista;
}
Lo raro es que da error cuando cierra paréntesis y llave, otra pregunta ¿hay otra forma para obtener elementos que no sea usando punteros?
Espero sus respuestas y respuestas.