ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4370322
Jetzt (Chat):
21 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

FAQ - Frequently Asked Questions - Allgemeine Programmierung


Was sind Singletons und wie benutzt man sie?

Um globale Variablen zu vermeiden benutzt man in C++ eine spezielle Singleton-Class. Wie der Name schon andeutet existiert von dieser Klasse nur eine Instanz.
Dieses erreicht man darüber, daß innerhalb der Klasse die Klasse als "static" angelegt wird und über eine als static deklarierte Funktion die Klasse erstellt und zurückgegeben wird.
Um zu verhindern daß mehrere Instanzen erstellt werden können, wird der Constructor in den Private-Bereich verschoben.

Das folgende Beispiel sollte es verständlich machen:

Code:
// MySingletonClass.h

class MySingletonClass
{
public:
    static MySingletonClass* GetClass();
    static void Kill();
private:
    ~MySingletonClass();
    MySingletonClass();
    MySingletonClass(const CMySingletonClass &other); //privater CopyConstructor
    static MySingletonClass* s_pClass;
};


// MySingletonClass.cpp

MySingletonClass* MySingletonClass::s_pClass = NULL;

MySingletonClass* MySingletonClass::GetClass() 
{
    if (NULL == s_pClass)
        s_pClass = new MySingletonClass();
    return s_pClass;
}
void MySingletonClass::Kill()
{
     
     if(s_pClass) delete s_pClass;
     s_pClass=NULL;
}


// Main.cpp

void main(void)
{
    // Holen des Zeigers auf die Klasse
    MySingletonClass* m_pMyClass = MySingletonClass::GetClass();
}


Zu diesem Thema gibt es das Buch "Entwurfsmuster" und das Original "Design Patterns".