Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Singleton-Klasse - ziemlich kompliziet!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
17.03.2008, 11:49 Uhr
xXx
Devil



C++:
#if !defined(SINGLETON_HPP__INCLUDED)
#define SINGLETON_HPP__INCLUDED

template <class class_type>
class Singleton
{
    Singleton() {};
    Singleton(Singleton const&);
    Singleton& operator=(Singleton const&);

public:
    inline static class_type& instance() { static class_type instance; return instance; }
};

#endif // SINGLETON_HPP__INCLUDED

Problematik dieser Implementierung:
(1) Wann wird der Destruktor aufgerufen?


C++:
class Logger : public Singleton<Logger>
{};
es wird einfach in der Vorlage class_type durch Logger ersetzt ... fertig

Mal nen ganz anderes Singleton:

C++:
#if !defined(SINGLETON_HPP__INCLUDED)
#define SINGLETON_HPP__INCLUDED

class Singleton
{
    Singleton() {};
    Singleton(Singleton const&);
    Singleton& operator=(Singleton const&);

public:
    template <class class_type>
    inline static class_type& instance() { static class_type instance; return instance; }
};

#endif // SINGLETON_HPP__INCLUDED


C++:
class foo
{};
class bar
{};

int main()
{
    bar& bar_ref = Singleton::instance<bar>();
    foo& foo_ref = Singleton::instance<foo>();
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
17.03.2008, 15:00 Uhr
0xdeadbeef
Gott
(Operator)


Der Destruktor wird aufgerufen, wenn alle Objekte mit statischer Storage-Duration zerstört werden - am Ende des Programms.

Das "andere Singleton," das du da hast, ist übrigens kein Singleton. Ich kann immer noch weitere Instanzen von foo und bar erstellen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: