Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.08.2009, 15:18

Fragen zu Singletons

Ich habe noch ein Paar fragen zu Singletons
1. Ich konnte in den Listings 8.6 und 8.7 keine Erstellung einer Singleton Instanz finden und dennoch kann man sich darauf beziehen...
2. was genau bedeutet der Ausdruck (!m_Singleton)
und 3. wofür benötigt man jetzt genau den operator "->" :?:
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

06.08.2009, 15:20

kann leider nur zu 2. was sagen:

der ausdruck bedeutet, dass der zeiger auf das singleton-objekt NULL ist. das ist der fall wenn du das erste mal die statische methode zum holen der instanz holst, da dann das objekt ja erzeugt werden muss!

3

06.08.2009, 15:26

aso ich hatte die Membervariable übersehen
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

C--

Alter Hase

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

4

06.08.2009, 15:47

Der "->" Operator brauchst du, wenn du einen Zeiger auf eine Klasse oder Struktur hast und auf ein Element davon zugreifen möchtest:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct bla
{
   int x, y;
};

...


bla *p;
...
p->x = 0;

// sonst müsstest du irgendwie sowas schrieben

*(p).x = 0;


-> ist aufgrund der Pfeil-Form besser zu lessen.
Also wie das ohne -> funktioniert weiss ich nicht genau.

hoffe das ist richtig
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

5

06.08.2009, 16:00

aso wenn ich nicht die instanz aktiv habe sondern nur den entsprechenden pointer danke
wenn mir jetzt noch wer die 1. Frage beantworten kann bin ich rundum zurfrieden
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

6

06.08.2009, 16:15

Zitat von »"C--"«


C-/C++-Quelltext

1
2
// sonst müsstest du irgendwie sowas schrieben

*(p).x = 0;

hoffe das ist richtig

Nicht ganz:

C-/C++-Quelltext

1
2
3
p->blub

(*p).blub

Und der Trick an Singletons ist, dass es immer nur ein einziges Singleton Objekt geben kann. Das wird dann irgendwo in der Singleton klasse erzeugt, ich hab das Buch nicht, also kann ich dir nicht die genaue Stelle sagen.
Lieber dumm fragen, als dumm bleiben!

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

7

06.08.2009, 16:22

da es nach der zeigervariante aussieht in etwa so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Foo
{
private:
   static Foo *s_pInstance;

public:

   static Foo *GetInstance() 
   {
        if (!s_pInstance)
            s_pInstance = new Foo();
        return s_pInstance;
   }
}

//in der cpp static variable noch definieren! operatoren/ctors sperren spar ich mir mal

8

06.08.2009, 16:24

Da ist aber noch wichtig zu erwähnen, dass der Konstruktor privat ist und es damit wirklich nur ein Objekt geben kann.
Lieber dumm fragen, als dumm bleiben!

9

06.08.2009, 17:12

also wird der konstruktor automatisch aufgerufen ? :?
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

06.08.2009, 17:39

Zitat von »"Flonk"«

also wird der konstruktor automatisch aufgerufen ? :?


Hast du schonmal nen Konstruktor direkt aufgerufen? ;)

Werbeanzeige