La programación multiplataforma tiene sus cosas. Vean por ejemplo el siguiente código:
class GuiSystem {
public:
protected:
CEGUI::FrameWindow *talk[3];
};
GuiSystem::GuiSystem()
{
//get some elements for auxiliar functions
talk[0] = (CEGUI::FrameWindow*)getWindow("talk1");
talk[1] = (CEGUI::FrameWindow*)getWindow("talk2");
talk[2] = (CEGUI::FrameWindow*)getWindow("talk3");
}
void GuiSystem::addTalk(string msgtext)
{
talk[0]->setText(msgtext);
}
Lo anterior funciona correctamente en Linux. En cambio, en Windows, compilado con gcc 3, la función addTalk explota sin ningún mensaje. La solución fue mover la inicialización de los elementos a la función.
class GuiSystem {
public:
protected:
CEGUI::FrameWindow *talk[3];
};
GuiSystem::GuiSystem()
{
//get some elements for auxiliar functions
talk[0] = (CEGUI::FrameWindow*)getWindow("talk1");
talk[1] = (CEGUI::FrameWindow*)getWindow("talk2");
talk[2] = (CEGUI::FrameWindow*)getWindow("talk3");
}
void GuiSystem::addTalk(string msgtext)
{
talk[0]->setText(msgtext);
}
Lo anterior funciona correctamente en Linux. En cambio, en Windows, compilado con gcc 3, la función addTalk explota sin ningún mensaje. La solución fue mover la inicialización de los elementos a la función.
Comentarios
Publicar un comentario