Programadores => General Programadores => Mensaje iniciado por: zunou en 20 de Agosto de 2010, 07:03:10 pm

Título: Problema tonto con c++
Publicado por: zunou en 20 de Agosto de 2010, 07:03:10 pm
Hola, resulta que he creado una clase para cargar y mostrar una serie de datos, coordenadas, etc..., pero me está dando problemas a la hora de definir mas tarde el objeto, por ejemplo, si yo defino el objeto fuera de la función principal, el programa funciona perfectamente:

obj objeto;

void main()
{
objeto.load(" objeto/.../.....");

while(1){

objeto.draw();

}

}

Pero si yo defino el objeto dentro del main, cuando ejecuto el programa, se produce un error, el caso es que al compilar no me da ningún error, ni nigun aviso.

lo que intento es tan sencillo como esto:



void main()
{
obj objeto; /// si lo pongo aquí ERROR
objeto.load(" objeto/.../.....");

while(1){

objeto.draw();

}

}

¿Alguien tiene idea de donde la puedo estar liando para que me de ese error?

Gracias ;)
Título: Re: Problema tonto con c++
Publicado por: gdl en 20 de Agosto de 2010, 07:55:17 pm
Debería funcionar, pero si el programa que tienes es grande podría ser que al colocar el objeto dentro de la función (es decir, en la pila) haya por ahí un buffer overrun y te estés dando cuenta ahora.

También podría ser un problema de fiasco en inicialización (http://blog.copton.net/archives/2009/01/25/static_initialization_fiasco/index.html) y que haya por ahí una dependencia en el orden de evaluar los objetos globales de forma que al quitar el objeto de la secuencia de inicialización estática, ésta secuencia se reordene de manera que falla.
Título: Re: Problema tonto con c++
Publicado por: zunou en 20 de Agosto de 2010, 08:12:31 pm
No sé, el programa no es que sea muy largo, lo que hace es leer los datos de un fichero, y almacenarlos en una serie de arrays, despues la funcion draw  toma esos datos y dibuja un polígono.

Creo que el problema puede estar en la funcion Load, que es la que almacena los datos en los distintos arrays. ¿Puede ser que esos arrays esten produciendo el problema?
Título: Re: Problema tonto con c++
Publicado por: zunou en 21 de Agosto de 2010, 12:40:20 am
Bueno, al final parece que se soluciona, si declaro el objeto como static, así que efectivamente hay algo que se modifica, esta solucion no creo que sea la mas correcta, porque realmente no he dado con el problema, pero bueno, al menos funciona  :D

saludos, y gracias por la pista.
Título: Re: Problema tonto con c++
Publicado por: IDandT en 25 de Agosto de 2010, 02:58:46 am
Edito: Me he equivocado de hilo al postear.