lt. Call-Stack ruft der Destruktor sich selber auf. Dabei stürzt natürlich das Programm ab. Im Grunde genommen habe ich keine Ahnung wieso der Destruktor sich selber aufruft. Im Grunde habe ich im Program eine Fläche wo ich nur die einzelnen Widgets wie einen Desktop austausche. Jedesmal wenn ein anderer Desktop angezeigt werden soll, wird der Alte (bis auf Ausnahmen) wieder zerstört. Nur der aktuelle Desktop macht da Probleme, mit allen Anderen (rund 15) funktioniert es.
Die Methode die den Destruktor auslöst ist in der gui.cpp:
Code: Alles auswählen
void Gui::openDesktop(BaseDesktop* desktop) {
// ggf. ein Display deaktivieren
if (Gui::display != NULL) openDisplay(NULL);
// den alten Desktop entfernen (nur bei Wechsel zwischen Home/Menu/Page)
if (Gui::desktop != NULL) {
instance->center.removeWidget(Gui::desktop);
Gui::desktop->hide();
}
// den neuen Desktop setzen
if (desktop != NULL) instance->center.insertWidget(-1, desktop);
// den alten Desktop löschen - außer Home&Menu&Error
if (Gui::desktop != NULL) {
if (Gui::desktop != Homescreen::getInstance()) {
if (Gui::desktop != MenuScreen::getInstance()) {
if (Gui::desktop != ErrorDesktop::getInstance()) {
delete Gui::desktop;
}
}
}
}
// neuen Desktop merken
Gui::desktop = desktop;
}
Hat jemand zufällig einen Ahnung wonach ich suchen kann, damit das wieder funktioniert?
hand, mogel