Autor
|
Tema: Problema con Stack con template y objetos (Leído 2,003 veces)
|
acer-x
Desconectado
Mensajes: 8
|
Hola, tengo un problema, este es el codigo #include <cstdlib> #include <iostream> #include <stack> #include <fstream> #include <stdlib.h> #include <string.h> #include "persona.h"
using namespace std;
void extraerarchivo(stack <persona> X) { string nombre,rut,sexo,domicilio,circunscripcion,mesa; ifstream archivo;
archivo.open("entrada.csv",ios::in);//Abrimos el archivo en el modo lectura
if(archivo.fail()) { cout<<"ERROR: No se pudo abrir el archivo."<<endl; exit(1); }
while(!archivo.eof()) { persona a; getline(archivo,nombre,';'); a.Setnombre(nombre);
getline(archivo,rut,';'); a.Setrut(rut);
getline(archivo,sexo,';'); a.Setsexo(sexo);
getline(archivo,domicilio,';'); a.Setdomicilio(domicilio);
getline(archivo,circunscripcion,';'); a.Setcircunscripcion(circunscripcion);
getline(archivo,mesa,';'); a.Setmesa(mesa);
X.push(a); }
archivo.close();
}
int main() { stack <persona> X; extraerarchivo(X);
persona x=X.top();
cout<<x.Getnombre()<<endl; cout<<x.Getrut()<<endl; cout<<x.Getsexo()<<endl; cout<<x.Getdomicilio()<<endl; cout<<x.Getcircunscripcion()<<endl; cout<<x.Getmesa()<<endl;
return 0; }
se supone que estoy leyendo los datos del archivo.csv y los guardo en el objeto persona y despues lo paso al stack, pero al momento de imprimer no me sale nada, solo los saltos de linea, que error puede haber ? gracias
|
|
|
En línea
|
|
|
|
Loretz
Desconectado
Mensajes: 117
|
void extraerarchivo(stack <persona> X) Estás pasando una copia de stack<persona> X, que al salir de la función se destruirá. Si necesitas modificar una stack<persona> ya creada puedes pasar una referencia (o un puntero) o, mejor, la función extrerarchivo puede devolver una stack<persona>. y usar así: stack<persona> extraerarchivo(); ... stack <persona> X = extraerarchivo();
supongo que hasta sería mejor si a la función eztraerarchivo le pasas también el iftream de dónde leer los datos, pero eso ya es otra cirugía.
|
|
|
En línea
|
|
|
|
acer-x
Desconectado
Mensajes: 8
|
void extraerarchivo(stack <persona> X) Estás pasando una copia de stack<persona> X, que al salir de la función se destruirá. Si necesitas modificar una stack<persona> ya creada puedes pasar una referencia (o un puntero) o, mejor, la función extrerarchivo puede devolver una stack<persona>. y usar así: stack<persona> extraerarchivo(); ... stack <persona> X = extraerarchivo();
supongo que hasta sería mejor si a la función eztraerarchivo le pasas también el iftream de dónde leer los datos, pero eso ya es otra cirugía. Muchas gracias! al final lo he puesto por referencia como has dicho, pero me seguia tirando el mismo problema, he estado toda la noche probando e investigando hasta que encontre la solucion, y era que habia hecho un constructor copia en la clase persona que no me daba ningun valor, asi que solo lo borre y ya. muchas gracias por responder se agradece. Saludoooos!!
|
|
« Última modificación: 23 Junio 2019, 13:11 pm por acer-x »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Duda C#] Problema con visivilidad de objetos
.NET (C#, VB.NET, ASP)
|
~~
|
2
|
3,252
|
8 Octubre 2007, 14:01 pm
por ~~
|
|
|
Problema con objetos.
Java
|
ThePinkPanther
|
4
|
2,814
|
15 Marzo 2014, 22:28 pm
por ThePinkPanther
|
|
|
Implementar Stack Trace (Walk through stack)
ASM
|
kub0x
|
5
|
3,949
|
16 Marzo 2014, 19:21 pm
por Arkangel_0x7C5
|
|
|
Problema con Pila (Stack), Hilos (Thread) y Lista números (Array)
Java
|
S_Code
|
1
|
2,645
|
27 Mayo 2016, 12:19 pm
por S_Code
|
|