Glocke hat geschrieben:Hi, über lang oder kurz braucht ja jeder einmal Konstanten
Ich brauch sie z.B. um Dateipfade zur Compilerzeit festzulegen, z.B. "data/map/xy.dat". Dabei verwende ich einen const std::string DATA = "data/" sowie const std::string MAP = "map/" und bastel mir dann den (zur Anwendung relativen) Pfad std::string path = DATA + MAP + "xy.dat" zusammen.
Hallo

warum nimmst du hier kein char[]?
Mit std::string hast du einen Overhead den du ja eigentlich nicht brauchst.
Glocke hat geschrieben:Wie und wo deklariere und initialisere ich meine Konstanten? Bisher habe ich in der Header-Datei mittels
Code: Alles auswählen
extern const std::string DATA, FONTS, SFX, ENTITY, MUSIC, MAP, TILES;
die Variablen deklariert und in der Quellcodedatei mittels
Code: Alles auswählen
const std::string DATA = "data/";
const std::string FONTS = "fonts/";
const std::string SFX = "sfx/";
const std::string ENTITY = "entity/";
const std::string MUSIC = "music/";
const std::string MAP = "map/";
const std::string TILES = "tiles/
initialisiert. Ist das so die gängige Praxis?
Also wenn es globale Konstanten sind oder welche die du weitergeben willst (wie zum Beispiel bei SDL: SDL_INIT_VIDEO) dann würde ich das in einen Header packen.
Die Dateipfade brauchst du ja wahrscheinlich nur an einer Stelle. Somit könntest du die Konstanten auch nur da deklarieren und initialisieren.
Wenn du allerdings viele verschieden Pfade hast (Map, Sound, Grafiken, Config-Dateien, usw.) dann würde es vielleicht doch Sinn machen, alle in einer Datei zu definieren. Wegen Übersichtlichkeit und so.
Aber ansonsten würde ich das auch so machen wie du.
Glocke hat geschrieben:Und was mache ich mit Integer-Konstanten: genauso oder mittels #define zahl 1
Konstanten mit Hilfe des Präprozessors zu definieren machte man eigentlich nur in C (weil es einfach keine andere Möglichkeit gab), wobei es im neuen C-Standard auch const gibt, oder?
In C++ würde ich das aber nicht machen.
"Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why."