Single Instance in einen Vererbungsbaum...
-
Hallo,
ich habe eine klassen hirachie. an der spitze ist eine abstrakte ( pure virtual) klasse. von dieser sind weitere klassen abgeleitet.
Nun möchte ich das nur genau eine instanz von allen klassen in diesen baum erstellt werden kann.
also ich habe:
class A { public: virtual void foo()=0; }; class B:public A { ... }; class C:public A { ... };
und nu möchte ich wenn ich von B ein objekt erstellt habe, ich keine weiteren objekte von B und keine von C erstellen kann.
wie mache ich das?
( ja, gegooglet habe ich schon .. ich nehme auch einen guten link wenn jemand einen hat)
-
Es gibt ein Pattern namens Singleton, welches dein Problem lösen sollte...
Dabei wird der defaultkonstruktor der Klasse auf protected gesetzt, so dass mittels new keine Instanz mehr erzeugt werden kann. Weiterhin enthält der Code für die Klasse eine Statische Variable der Klasse selbst...
Falls das net ausreicht, einfach mal nach singleton googlen
-
sehe gerade, dass weiter unten auf dieser Seite bereits ein Beitrag ist...
-
ich danke dir!
der name Singleton war mir nicht bekannt.. dann kann selbst google nichts finden
-
kann ich dafür sorgen, dass wenn jemand die klasse ableitet er keinen public konstruktor erstellt?
Weil so wie ich das verstanden habe geht das nur für eine klasse, und nicht für einen ganzen vererbungsbaum..
-
nee, wüsste nicht wie das geht, da jede Klasse (geerbt oder nicht) ja einen default-konstruktor besitzt der per default eigentlich public ist. Du musst also bei jeder abgeleiteten Klasse den Konstruktor auf protected setzen