Witam
Pisze pewien program i chciałem, aby między innymi był łatwy dostęp do wskaźnika okna głównego. Postanowiłem zrobić to zgodnie z wzorcem singelton. Z tym, że nad oknem głównym jest klasa Program, która też jest singeltonem i to w niej tworze okno główne i parę innych rzeczy. W definicji klasy okna głównego deklaruje:
static Okno_GL *MainWindow; // private
static Okno_GL *ObjectMain(); // public
Okno_GL() ; // private
Definicje :
Okno_GL* Okno_GL::MainWindow = NULL;
Okno_GL * Okno_GL::ObjectMain()
{
if(MainWindow==NULL)
{
Okno_GL *MainWindow = new Okno_GL();
qd "wskaznik w konstruktorze" << MainWindow;
return MainWindow;
}
else
{
return MainWindow;
}
}
Teraz jeśli chce stworzyć pierwsze okno główne w klasie Program w ten sposób
Okno_GL *wsk = Okno_GL::ObjectMain()
wsk->show();
Program się zapętla i tworząc w kółko Różne obiekty okna głównego. Poniżej przedstawiam debug z konstruktora okna głównego.
konstruktor okna Okno_GL(0x127870c0)
konstruktor okna Okno_GL(0x13f31d88)
konstruktor okna Okno_GL(0x13f32c68)
konstruktor okna Okno_GL(0x13f7dfc0)
konstruktor okna Okno_GL(0x13f7eea0)
konstruktor okna Okno_GL(0x16268a60)
konstruktor okna Okno_GL(0x16269940)
konstruktor okna Okno_GL(0x164c8738)
konstruktor okna Okno_GL(0x164c9618)
itd
Gdzie błąd.