Variablengültigkeit
-
um in meiner main-funktion nicht immer
fenster und so weiter erstellen zu müssen
habe ich die wichtigsten dinge
wie
Fenster x;
Input Input;
Buffer buffer;
...in einer headerdatei deklariert,
allerdings habe ich nun die vermutung dass diese variablen nun globale gültigkeit haben und erst bei Programmende wieder freigegeben werdenIm Moment sehe ich darin noch kein Problem, da die bisher vergebenen dinge ohnehin solang existieren sollen; allerdings was ist wenn ich im späteren Verlauf einen variablennamen doppelt vergebe?
ist mein jetziges vorgehen nun eher unüblich oder welche alternativen möglichkeiten habe ich?
können weitere probleme auftreten?
-
Wie wäre es mit Klassen und Instanzen eben jener?
Ich weiß ja nicht was du machst, aber wenn es zB ein Spiel ist, könntest du die Variablen in Klassen tun wie:
- Spiel
-- Gegner
-- Spieler
--- Input
- GUI
- SoundDavon dann entsprechend Instanzen erzeugen etc. Aber es sieht eher danach aus das du dir das Prinzip von Objektorientierung einmal genauer anschauen solltest.
-
das ist die möglichkeit, aber es kann auch sein das du das mi strukturen auch machen kannst. eis aber nicht genau.

-
spieler , objekte , und ähnliches ist bereits in klassen gepackt
über eine klasse spiel hab ich auch schon nachgedacht, habe spieler und gegner als unterklasse von objekt erstellt
nun wie soll ich die klasse spiel angehen?sie hat einen
std::vector<objekte*>
Fenster;allerdings möchte ich das Fenster nicht als public deklarieren
somit müsste ich um zugriff drauf zu haben eine funktion verwendengame x;
x.GetWindow().resize();sin aber blöde anweisungen,...
viel besser wäre Window y;
y.resize();oder?
-
Mach es so wie du es für richtig hälst.
Hat denn nur ein Spiel ein Fenster oder hat ein Spiel einen Verweis auf einem Fenster (ist also einem zugeordnet)? Brauchst du eventuell mal mehrere Fenster? Oder mehrere Spiele? Usw.
-
Grundsätzlich sind globale Variablen immer zu vermeiden, wenn möglich. Meistens gibt es dazu eine passende Alternative (Singleton ist nur begrenzt eine gute Möglichkeit, bzw. hat es gar nicht direkt mit globalen Variablen zu tun). Vieles lässt sich lokal definieren, und oft ist eine Parameterliste besser - vor allem aber sicherer. Ausserdem gibt es Klassen, und OOP kann auch seinen Teil dazu beitragen.