SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: juanwalker en Martes 27 de Octubre de 2009, 22:54
-
Hola comunidad solo código, estoy tratando de hacer correr un programa muy sencillo utilizando una lista STL para guardar un arreglo de objetos. Resulta que estoy guardando bien los valores con push_back, el problema lo tengo cuando accedo a los datos y me encuentro que no se guardan bien. Agradecería mucho si alguien sabe que puede estar pasando aquí.
Mi entorno es Dev-C++ 4.9 si sirve saber de algo
El código no tiene errores de sintáxis , solo copiar y pegar
-----------------------------8<-------------------------------------
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <list>
#define cantidad 15
using namespace std;
class Persona
{
public:
long id;
float* codigos;
Persona(long id,float codigos[])
{
this->id=id;
this->codigos=codigos;
}
};
class Codigos
{
public:
Codigos()
{
list<Persona> personas;
this->cargaNumero(personas);
Persona p1 = personas.front();
for (int i=0; i< cantidad ;i++)
printf("n Persona codigo[%d] = %f",i,p1.codigos);
printf("nn");
}
private:
void cargaNumero(list<Persona>& personas)
{
float codigos[cantidad];
long id;
for(int i=0; i <cantidad ;i++)
{
codigos=i/3+pow(i,2);
}
Persona p1(id,codigos) ;
personas.push_back(p1);
Persona p2 = personas.front();
for (int i=0; i< cantidad;i++)
{
printf("n Persona codigo[%d] = %f",i,p2.codigos);
}
printf("nn");
}
};
int main(int argc, char *argv[])
{
Codigos* codigos = new Codigos();
getch();
}
-----------------------------8<-------------------------------------
-
Lo que pasa es que codigos (fijate que complejo haces el programa poniendole a tantas cosas el mismo nombre o parecido), la variable local del metodo cargaNumero, desaparece de la pila en cuanto termina el metodo y por lo tanto estas apuntando a memoria que ya no corresponde a los numeros que le introdujiste en su momento, por eso sale cualquier cosa. Si pones esa variable en la parte privada de la clase te funciona bien por ejemplo.
PD. id esta siendo usado sin inicializar.
-
Hola, muchas gracias por tu respuesta. Ya hice la correción y ahora funciona! lo que he hecho es copiar cada elemento del codigo utilizando un for!
Agradezco mucho que me hallas podido ayudar!! Muy buen día y éxitos!!
-
De nadas :good: