Hola instru, gracias por responder, me sirvió lo que me dijiste, al final creé una función fantasma creando un objeto vacío:
ManPersonas.h
Código C++:
Ver originalPersona 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();
}
y en crud_per.h hice unos if para solucionar el problema en updated y deleted:
Código C++:
Ver originalvoid updated(){
int op;
string xnom;
Persona p;
xnom = addString("Nombre");
p = getRow(xnom);
if(p.id == 0){
cout << "\n La persona deseada no existe :(" << endl;
}
else {
cout << "\n Persona: " << p.id << " Nombre: " << p.nom << " Apellido: " << p.ape;
cout << "\n ¿Desea algún dato? Aceptar=1/Cancelar=2 :";
cin >> op;
if(op == 1){
cout << "\n ¿Desea editar el nombre ("<< p.nom <<") actual? Aceptar=1/Cancelar=2 :";
cin >> op;
if(op == 1){
p.nom = addString("Nombre");
}
else {
pause(2);
}
cout << "\n ¿Desea editar el apellido ("<< p.ape <<") actual? Aceptar=1/Cancelar=2 :";
cin >> op;
if(op == 1){
p.ape = addString("Apellido");
}
else {
pause(2);
}
if(update(p)){
cout << "\n persona editada :)" << endl;
}
else {
cout << "\n la persona ya existe :(" << endl;
}
}
else if(op == 2) {
pause(2);
}
else {
cout << "\n error :(" << endl;
}
}
}
void deleted(){
int op;
string xnom;
Persona p;
xnom = addString("Nombre");
p = getRow(xnom);
if(p.id == 0){
cout << "\n La persona deseada no existe :(" << endl;
}
else {
cout << "\n Persona: " << p.id << " Nombre: " << p.nom << " Apellido: " << p.ape;
cout << "\n ¿Desea eliminar la persona seleccionada? Aceptar=1/Cancelar=2 :";
cin >> op;
if(op == 1){
deleted(p);
cout << "\n persona eliminada :)" << endl;
}
else if(op == 2) {
pause(2);
}
else {
cout << "\n error :(" << endl;
}
}
}
Pero en ManPersonas.h con el update no me doy cuenta cómo editar, lo del if que me dijiste es para evitarlos duplicados en los nombres (en java usaba el equals), pero que debo usar de la lista para actualizar??
Código C++:
Ver originalbool update(const Persona& p){
Persona per = getRow(p.id);
if(per.nom != p.nom){
if(check(p)){
return false;
}
}
return true;
}
Espero sus respuestas y saludos