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
Da ihr aber gebündelt andere Meinung seid, ich es nicht besser weiß, bitte ich um Bespiele und mehr Infos. Danke!
PS: Warum sollen globale Zeiger so bescheiden sein? Mir ist klar, dass man sie sparsam benutzen muss, aber einen globalen Zeiger zur Game Logic kann ich doch haben!?
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »dot« (30.11.2012, 21:07)
Weil er C++ nicht verstanden hat!?
Da kann ich nur zustimmen. Ich seh aber nicht, was du mir damit sagen willst bzw. wieso Konstrukturen dabei ein Problem darstellen würden.
Ok, ich versteh aber leider nicht, inwiefern Konstrukturen diesem Ziel im Wege sein sollen.
Das stimmt nur bedingt. Die Initialisierungsreihenfolge globaler Objekte in der selben Übersetzungseinheit (im selben .cpp File) ist wohldefiniert. Modulübergreifend kann man Funktionen benutzen, die eine Referenz auf eine lokale statische Variable returnen um dieses Problem elegant zu lösen. Sofern man bei derlei Konstrukten überhaupt von "elegant" sprechen kann...
Was hat das eine mit dem anderen zu tun?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Was hälst du von globalen Zeigern?
McShaffry führt auch dann recht schnell auf, dass globale Zeiger besser sind als globale Variablen
Wieso erzähle ich, dass Init-Methoden sinnvoll sind?
Community-Fossil
Es wurde schon einiges geschrieben, aber ich kann dazu nur (auch) sagen: In so einem Fall schmeißt man eine Exception. Das einzige Problem was dann bleibt, ist dass Exception performancetechnisch aufwendig sein kann. Aber eine Exception sollte, wie der Name schon sagt, im Normalfall gar nicht auftreten. Sauberer als eine Init-Methode mit Rückgabewert ist so ein Vorgehen auf jeden Fall.Alles was einen Fehler erzeugen kann, gehört in eine Init-Methode. Warum? Weil der Konstruktor trotzdem ausgeführt wird und kein Rückgabewert besitzt. Was gibt es schlimmeres als gar kein Objekt im Speicher? Genau! Ein beschädigtes Objekt im Speicher das nicht funktioniert.
Weil er C++ nicht verstanden hat!?
Das kann ich nicht beurteilen.
Da kann ich nur zustimmen. Ich seh aber nicht, was du mir damit sagen willst bzw. wieso Konstrukturen dabei ein Problem darstellen würden.
Ich kann mir vorstellen, das man vielleicht bereits das Objekt "Devices" erzeugen möchte, aber zu dem Zeitpunkt noch nicht weiß, welche Inputdevices der Benutzer überhaupt besitzt. So wäre es mir doch möglich, erst den Controller zu initialisieren, wenn der Spieler ihn auswählt?
Ok, ich versteh aber leider nicht, inwiefern Konstrukturen diesem Ziel im Wege sein sollen.
Das habe ich bereits versucht zu erklären. Was ist wenn ich versuche mit eigenserstellten DialogBoxen Fehler abzufangen, aber das FontSystem korrumpiert ist aufgrund von kaputter Fontdatein? Sollte ich hier nicht versuchen das ganze mit einer Init-Methode sicherzustellen?
Das stimmt nur bedingt. Die Initialisierungsreihenfolge globaler Objekte in der selben Übersetzungseinheit (im selben .cpp File) ist wohldefiniert. Modulübergreifend kann man Funktionen benutzen, die eine Referenz auf eine lokale statische Variable returnen um dieses Problem elegant zu lösen. Sofern man bei derlei Konstrukten überhaupt von "elegant" sprechen kann...
McShaffry sagt aber, dass es nicht wohldefiniert ist. Hast du 'ne Quelle?]
Zitat von »ISO/IEC 14882:2011 §3.6.2/2«
Other non-local variables with static storage duration have ordered initialization. Variables with ordered initialization defined within a single translation unit shall be initialized in the order of their definitions in the translation unit.
Dein Beispiel klingt nach Singleton?
Was hat das eine mit dem anderen zu tun?
HRESULT als Rückgabewert zur Analyse ob die Funktion korrekt ausgeführt wurde?
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (30.11.2012, 21:45) aus folgendem Grund: Typo ;)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige