Objekte vergleichen -> Singleton !!
-
Hallo,
wie kann man zwei Objekte miteinander vergleichen, ob sie die gleicher
Adresse im Speicher haben.Z.B.
// Singleton
// Hier wird das Objekt nicht auf der Heap erzeugt, sonst müsste man
// eine extra Methode zur Verfügung stellen, um das Objekt wieder frei zugeben.Control& Control::getInstance(void)
{
static Control instance;
return instance;
}// Objekt erzeugen
Control* deviceControl = &Control::getInstance();
Was passiert, wenn ich noch einmal die Methode getInstance() aufrufe ??
Wird wieder ein neues Objekt erzeugt, da ich nicht mit new arbeite oder
wird die gleiche Adresse zurückgegeben???
Was passiert hier wirklich?Control* deviceTest = &Control::getInstance();
Wie kann ich das Objekt deviceControl mit dem deviceTest vergleichen?
Danke

-
informier dich doch einfach über das Schlüsselwort 'static'. Dann müsste es dir klar werden.
-
Es ist mir klar was static tut. Aber was passiert wenn
static Control instance; zweimal aufgerufen wird!Viele Grüße

-
So wie du redest, ist es dir überhaupt nicht klar.

-
Jetzt ist gut.
Ich wünsche Dir einen schönen Tag noch.
-
Hi,
das was du da hast, ist kein richtiges Singelton. Ein Singelton sagt, das es Prozessweit nur eine Instanz gibt. So wie du das versuchst, bekommst du immer eine neue Instanz von der Klasse zurück.
Ist das aufrufen einer Release Methode für dich ein so großes Kriterium, dass du das Objekt nicht auf dem Heap anlegen willst?
MFG
Kai
-
@Reza
Nachlesen kann echt nicht schaden. Oder nimmst Du von unregistrierten keine Hilfe an?A variable declared static in a function retains its state between calls to that function.
Was wiederum bedeutet, dass immer das selbe Objekt (nicht das Gleiche) zurückgegeben wird. Somit handelt es sich um ein ECHTES Singleton (@KaiE)
-
@RenèG
Du hast Recht, ich hatte das "&" in der Control& Control::getInstance(void) Funktion überlesen. Dann wären die Rückgabewerte nicht gleich, weil das Objekt kopiert worden wäre.MFG der geläuterte
Kai[ Dieser Beitrag wurde am 08.07.2003 um 14:23 Uhr von KaiE editiert. ]
-
Hallo RenéG,
ich habe bis jetzt Singleton immer im Zusammenhang mit new verwendet,
deshalb war mir dieser Variation etwas neu!Danke & viele Grüße Reza
