Hola eferion, aunque parezca mentira solucioné mis problemas con el crud que tenía, la clave estaba en el struct Persona.
Código C++:
Ver original#ifndef PERSONA_H
#define PERSONA_H
using namespace std;
struct Persona{
int id;
string nom;
string ape;
bool operator == (const Persona& p){
return p.id == id;
}
// este operator < lo tuve que usar para ordenar mis datos
bool operator < (const Persona & p) const
{
return id < p.id;
}
};
#endif /* PERSONA_H */
Y en el ManPersonas, luego de borrar, reinsertar, ordeno los datos para que al editar mis datos no tenga problemas con el orden
Código C++:
Ver original#include <list>
#include "../Model/Persona.h"
#include "../Lib/Util.h"
#ifndef MANPERSONAS_H
#define MANPERSONAS_H
using namespace std;
std::list<Persona> lista;
int maxIdP = 0;
int getMaxIdP(){
return ++maxIdP;
}
Persona getPhantom(){
Persona p;
p.id = 0;
p.nom ="";
p.ape ="";
return p;
}
Persona getRow(std::string xnom){
for(Persona p : lista){
if(p.nom == xnom){
return p;
}
}
return getPhantom();
}
Persona getRow(int xid){
for(Persona p : lista){
if(p.id == xid){
return p;
}
}
return getPhantom();
}
bool create(const Persona& p){
if(getRow(p.nom).nom != ""){
maxIdP--;
return false;
}
else{
lista.push_back(p);
return true;
}
}
bool update(const Persona& p){
Persona per = getRow(p.id);
if(per.nom != p.nom){
if(getRow(p.nom).nom != ""){
return false;
}
}
lista.push_back(p);
lista.sort();
return true;
}
void deleted(const Persona& p){
}
std::list<Persona> read(){
return lista;
}
#endif /* MANPERSONAS_H */
Ahora me quedan hacer andar bien las validaciones tanto en los string como en los enteros, en conclusión este código hecho comparado con lo que tu y Instru me dijeron es malo, pero para safar un poco da aunque debo mejorarlo...
Espero sus respuestas y saludos.