Variablen "sammeln"
-
Hallo,
ich wusste nicht recht, wie ich meinen Beitrag nennen soll, aber bei "Variablen sammeln" meinte ich folgendes.Wenn ich viele Konstanten habe sowohl primitive values als auch Objekte, was ist die beste Möglichkeit, diese organisiert zu sammeln ? Für Primitives hatte ich immer eine seperate HeaderDatei mit enums und konstante Objekte würde ich als extern in dieser HeaderDatei deklarieren. Gibt es für konstante Objekt so etwas Ähnliches wie ein Enum ?
Gruss
Robin
-
Sind deine konstanten Objekte alle vom selben Typ? Wenn ja, könntest du ein Java-Style-Enum nachbauen (mache ich selbst manchmal). D.h. deine Klasse hat einen privaten Konstruktor und all deine Objekte sind public static const "member", siehe z.B. hier: https://stackoverflow.com/questions/1965249/how-to-write-a-java-enum-like-class-with-multiple-data-fields-in-c
Wenn du unterschiedliche Typen hast, dann... hm... bleibt wohl nicht übrig also globale Konstanten zu machen. Solange die nichts mit Speicher-Management tun und keine Abhängigkeiten haben, ist das auch kein Problem. Ansonsten kann man sich sowas wie on-demand creation vorstellen und darin ggf. sogar ein einfaches "new" + leaken des RAMs zum Programmende, damit nicht unnötig aufgeräumt wird. Natürlich nur, wenn der destruktor nicht irgendwie wichtig ist. Aber dann wäre die Frage, ob das Objekt wirklich eine Konstante ist.
-
Ich würde die dann einfach sinnvoll in Strukturen sammeln mit ordentlichen Benamungen.
#include <iostream> struct A { int a = 2; const char* b = "blub"; }; constexpr A foo = {}; int main() { std::cout << foo.a << "\n"; }
Oder:
struct A { constexpr static int a = 2; constexpr static const char* b = "blub"; }; int main() { std::cout << A::a << "\n"; }