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

TigerClaw25

unregistriert

31

22.07.2017, 17:34

Ich könne es auch auf einer Methode belassen, den Zeiger als Rückgabewert weglassen und einfach die Funktion in der Main aufrufen. Auf dje Adresse würde ich dann direkt über die Membervariable über den scope zugreifen, wobei ich diese dann als public deklarieren müsste.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

32

22.07.2017, 18:16

Dann schmeiẞ das Singleton doch einfach komplett weg und überleg dir was vernünftiges dafür. Wofür willst du das aktuell genau nutzen? Geht es um die Logger Klasse aus dem Buch?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

33

22.07.2017, 21:45

Ich könne es auch auf einer Methode belassen, den Zeiger als Rückgabewert weglassen und einfach die Funktion in der Main aufrufen. Auf dje Adresse würde ich dann direkt über die Membervariable über den scope zugreifen, wobei ich diese dann als public deklarieren müsste.
Dann brauchst du kein Singleton mehr und kannst direkt eine globale Variable nehmen. Genau das wäre es ja dann. Noch besser wäre natürlich auch keine globale Variable zu nutzen, sondern saubere Dependency-Injection.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TigerClaw25

unregistriert

34

23.07.2017, 14:36

In wie fern globale variable? Eine Instanz der klasse global erzeugen?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

35

23.07.2017, 15:09

Was du aktuell vor hast ist mit einer Methode eine Instanz zu erstellen die statisch in einer Klasse steckt um dann von überall darauf zuzugreifen. Welchen Vorteil soll das zu einer einfachen globalen Variable haben?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

36

23.07.2017, 15:39

Pseudo-Objekt-Orientierung. Die Falle für alle Anfänger.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TigerClaw25

unregistriert

37

24.07.2017, 10:55

Und wie genau würde es global aussehen? Einfach eine Instanz einer Klasse global erzeugen? So einfach die alternative zur singleton?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

38

24.07.2017, 15:26

Richtig. Im Header als external deklarieren, fertig.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TigerClaw25

unregistriert

39

27.07.2017, 15:58

Was ich bei Singletons aber so faszinierend finde, weil ich gerade alles noch einmal lese, ist die Tatsache, dass man ohne vorher eine Instanz erzeugt zu haben, direkt auf eine Funktion Get des Singletons zugreifen kann, um dann eine einzige Instanz zu erzeugen.

Denn eigentlich sind Klassendeklarationen Schablonen. Das man auch ohne Instanzen eine solche Schablone aufrufen kann, um sich dann die Instanz zu erstellen, finde ich interessant.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

40

27.07.2017, 16:07

Was ich bei Singletons aber so faszinierend finde, weil ich gerade alles noch einmal lese, ist die Tatsache, dass man ohne vorher eine Instanz erzeugt zu haben, direkt auf eine Funktion Get des Singletons zugreifen kann, um dann eine einzige Instanz zu erzeugen.

Denn eigentlich sind Klassendeklarationen Schablonen. Das man auch ohne Instanzen eine solche Schablone aufrufen kann, um sich dann die Instanz zu erstellen, finde ich interessant.

Und warum möchtest du nicht einfach direkt eine globale Instanz haben anstatt eine Funktion aufzurufen die dir eine Instanz liefert? Dir scheint es hier um den globalen Zugriff auf ein Objekt zu gehen und genau dafür gibt es in C++ eben globale Variablen. Wirklich tolles Design ist das aber in beiden Fällen nicht. Du bist ja jetzt erst ein paar Wochen dabei. Vielleicht musst du einfach mal mehr selbst rum spielen und selbst auf die Nase fallen. Allgemein möchte ich dir den Rat geben mehr zu experimentieren. Du stellst unglaublich viele Fragen und viele davon lassen sich lösen indem man selbst damit rum probiert. Deine Zeiger und Funktionszeigerfragen fallen zum Beispiel in diese Kategorie. Dann siehst du selbst was geht und was nicht. Genau so kann es dann mit dem Codedesign gehen. Wenn du eine Idee hast dann versuche es. Wenn es klappt ist es gut und wenn du nach einem halben Jahr siehst dass das Käse war, machst du es beim nächsten mal eben anders.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige