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

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

11

11.02.2010, 21:12

Zitat von »"Mastermind"«

Zitat

Zum Anfang bracuhst du diese sicher nicht kommst aber später ohne diese auch nicht aus.

Darüber lässt sich sicherlich streiten.


richtig man kann ohne und mit. manchmal ist es aber wirklich einfacher wenn nur eine instanz an sehr vielen stellen benötigt wird. ansonsten ist es einfach nur nervig, dazu gibt es das pattern schlieslich.

12

11.02.2010, 21:15

Zu SIngletons: Man muss nur unterscheiden zwischen "Es darf unter gar keinen Umständen mehr als ein Objekt dieser Klasse geben" und "Ich brauche eine Instanz dieser Klasse, die ich von überall benutzen kann".
Wenn nur zweiteres Zutrifft, hat man mit globalen Variablen mehr Kontrolle (kann die z.B. zu definierten Zeiten erstellen und zerstören).
Lieber dumm fragen, als dumm bleiben!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

13

11.02.2010, 21:52

Zitat von »"Jonathan_Klein"«


Wenn nur zweiteres Zutrifft, hat man mit globalen Variablen mehr Kontrolle (kann die z.B. zu definierten Zeiten erstellen und zerstören).

Ne, nicht wirklich. Das ist ja ein grosses Problem. Die Reihenfolge der Initialisierung von globalen Objekten ist über verschiedene Übersetzungseinheiten nicht definiert. (Alles, was wir von der Zerstörung wissen ist, dass sie in umgekehrter Reihenfolge, wie die Initialisierung passiert).

14

11.02.2010, 22:35

Zitat von »"drakon"«

Zitat von »"Jonathan_Klein"«


Wenn nur zweiteres Zutrifft, hat man mit globalen Variablen mehr Kontrolle (kann die z.B. zu definierten Zeiten erstellen und zerstören).

Ne, nicht wirklich. Das ist ja ein grosses Problem. Die Reihenfolge der Initialisierung von globalen Objekten ist über verschiedene Übersetzungseinheiten nicht definiert. (Alles, was wir von der Zerstörung wissen ist, dass sie in umgekehrter Reihenfolge, wie die Initialisierung passiert).

Hm, ich hatte vergessen zu erwähnen, das ich für sowas neulich nochmal globale Zeiger statt Singletons benutzt habe, die dann entsprechend mit new und delete benutzt wurden, um die Reihenfolge festzulegen. Das geht dann bei Singletons nicht mehr so leicht, weil man eben nur ein Objekt erstellen kann.
Lieber dumm fragen, als dumm bleiben!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

15

11.02.2010, 22:45

Zitat von »"Jonathan_Klein"«


Hm, ich hatte vergessen zu erwähnen, das ich für sowas neulich nochmal globale Zeiger statt Singletons benutzt habe, die dann entsprechend mit new und delete benutzt wurden, um die Reihenfolge festzulegen. Das geht dann bei Singletons nicht mehr so leicht, weil man eben nur ein Objekt erstellen kann.

Ja. Das ginge so. Allerdings würde ich wahrscheinlich dennoch auf ein Singleton für die Verwaltung dieser Zeiger zurückgreifen, damit du sicher sein kannst, dass die dann auch leben. Oder wie hast du das gemacht?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

16

11.02.2010, 23:07

natürlich geht das auch mit singletons, gibt davon eine zeigervariante die sehr zuverlässig arbeitet ;)

17

11.02.2010, 23:09

Naja, eigentlich kein großes Problem, beim initialisieren vom Spiel muss man ja eh auf bestimmte Dinge achten (z.B: DX initialisieren, bevor man Modelle lädt) und dann ist das ja kein Problem.
Kann natürlich jeder machen, wie er will, aber Singletons sind meiner Meinung nach überbewertet. Ich meine, jeder sagt, dass globale Variablen böse sind (was sicherlich begründet ist) aber Singletons tun so, als wären sie eine Lösung, was sie definitiv nicht sind, denn die Daten sind prinzipiell immer noch global, man greift nur anders darauf zu.
Lieber dumm fragen, als dumm bleiben!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

18

11.02.2010, 23:27

Ja. Klar ich meine auch weniger das Initialisieren, sondern du musst dafür sorgen, dass das Objekt erst zerstört wird, wenn niemand mehr darauf zugreift. Im allgemeinen ist das ja ein Problem und man sollte es auf das Ende der main verlagern. Ich kenn jetzt das Einsatzgebiet, wo du das benutzt zu wenig, aber ich meinte halt, dass es gefährlich sein kann, wenn man die Gültigkeit von Hand regelt.
Was ich damit meine ist, dass du eine Klasse füllen kannst mit Sachen, welche du global benutzen willst und damit du sicher sein kannst, dass sie initialisiert sind wirst du denke ich auf so etwas ähnliches, wie ein Singleton zurückgreifen.

@trommlbomml:
Entweder du hast nicht ganz mitbekommen, von was wir reden, oder ich verstehe dich nicht ganz. ;) (und diesesmal hat es nichts damit zu tun, dass ich nicht lesen kann, was du geschrieben hast. :D)

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

19

12.02.2010, 00:21

öhm na keine ahnung soweit ich es verstanden habe geh es um singletons und ob sie notwendig sind und da wurde für und gegen argumentiert. und ich argumentiere halt gerade dafür. wenn ich was falsch verstanden habe dann weist mich zurecht dann halt ich meine vorlaute klappe^^

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

20

12.02.2010, 00:29

Zitat von »"TrommlBomml"«

öhm na keine ahnung soweit ich es verstanden habe geh es um singletons und ob sie notwendig sind und da wurde für und gegen argumentiert. und ich argumentiere halt gerade dafür. wenn ich was falsch verstanden habe dann weist mich zurecht dann halt ich meine vorlaute klappe^^

Achso. Ich denke ich versteh jetzt. Ich dachte, dass dein Kommentar an mich gerichtet ist. ;)
Ja. Das was Jonathan möchte geht auch mit einem Singleton. Das war ein wenig mein Punkt, dass es, wenn man es sicher machen will es auf so etwas, wie ein Singleton rausläuft.

Werbeanzeige