Programación General > C++ Builder
Stack Overflow
Mialom:
Buenos dias, y muchas gracias de antemano
estoy teniendo un problema cuando le paso un parámetro adicional a un form en el constructor, porque necesito dicho parametro para la funcionalidad propia que le voy a dar al form nuevo. Pero al crearlo, se enbucla y al final me da un mensaje de desbordamiento de pila (Stack Overflow).
Muchas gracias.
Eternal Idol:
Depuralo.
Mialom:
Hola de nuevo,
a lo mejor soy algo novato en esto, pero cuando lo estoy debugeando, en el constructor de mi form, salta al constructor de la clase base y de esta salta al constructor de la clase TForm que hereda de TCustomForm, que lo que hace es volver al constructor de mi form y asi hasta que se desborda la pila y me salta la excepción.
No llevo mucho tiempo programando asi que no se si se me estará escapando algo, pero lo de pasar un parámetro al constructor de un form ya lo hice en otra ocasión y me funcionó correctamente. He mirado el otro codigo y no veo diferencia aparente. Si alguien sabe algo acerca de que puede estar pasando, no se si se me estará escapando algo.
Muchas gracias de antemano.
Eternal Idol:
--- Cita de: "Mialom" ---a lo mejor soy algo novato en esto, pero cuando lo estoy debugeando, en el constructor de mi form, salta al constructor de la clase base y de esta salta al constructor de la clase TForm que hereda de TCustomForm, que lo que hace es volver al constructor de mi form y asi hasta que se desborda la pila y me salta la excepción.
--- Fin de la cita ---
Tenes que averiguar la razon por la cual pasa eso. No es mi fuerte el Builder y sin ver el codigo lo unico que se me ocurre es que le pasas a algun metodo la direccion de tu constructor ..
Mialom:
Buenas tardes de nuevo,
El código es muy sencillo:
//-------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner, int x) // <-- Aqui pasa al constructor de la clase base
:TForm(Owner) // <-- Aqui entra y vuelve a mi constructor
{
...
}
//-------------------------------------------------------
Pasa de un constructor a otro hasta que se desborda la pila.
Su definición en el cabecero es:
__fastcall TForm1(TComponent* Owner, int x);
Y la llamada desde el otro fomulario es:
TForm *Form1 = new TForm(this, entero);
Form1->ShowModal();
delete Form1;
Muchas gracias, espero que esto explique mejor mi problema.
Un saludo.
Navegación
[#] Página Siguiente
Ir a la versión completa