Mein Ziel ist es, globale Konstanten in einem C++ - Spiel zu haben, an dem ich gerade arbeite (um einige Grafikinformationen und ähnliches darzustellen). Meine derzeitige Implementierung besteht darin, sie alle in eine .h zu werfen und sie überall einzubeziehen. Dies funktioniert, außer dass jedes Mal, wenn ich eine Einstellung ändere, die gesamte Codebasis neu kompiliert werden muss.Korrekte Implementierung der globalen Konfiguration
Also, meine nächste Idee war es, sie in einige Konfigurations-TXT-Datei werfen und analysieren sie, auf diese Weise wird kein Code tatsächlich geändert, wenn sich die Einstellungen ändern. Der Parser war einfach genug und ich konnte die Werte in die Konstanten schreiben, aber da der Parser ein Codeblock war, waren die Konstanten nicht länger global.
Gibt es einen guten Weg, dies zu lösen? Vielleicht eine Möglichkeit, sie global zu machen, auch wenn sie in einem Block sind oder irgendwie vermeiden, alles neu zu kompilieren, wenn man die Einstellungen ändert?
Zugegebenermaßen wollte ich das ursprünglich ohne zusätzliche Konstrukte tun, aber dies folgt mehr OO-Konventionen und funktioniert im Allgemeinen besser! Ich mochte Joachims Vorschläge auch, aber diese hat es für mich gelöst, danke! – akroy
@akroy Ich stimme nicht zu. Welche Art von OO-Konventionen meinst du hier überhaupt? Wir haben ein Singleton. Die Lösung eines Programmierers scheint dem Einführen eines Singletons, das im Grunde um eine 'std :: map' herum aufgebaut ist, mit langsamer Suche und ohne Typsicherheit ohne wirklichen Nutzen gegenüber blanken Variablen klar überlegen zu sein. – IceFire
Hey IceFire! Für den Kontext ist diese Frage vor 5 Jahren, als ich zum ersten Mal lernte zu programmieren. Wenn ich mir den Kommentarthread ansehe, sieht es so aus, als ob ich Theoretiker-Lösung eines Programmierers auch in der Theorie vorziehen würde, aber ich konnte es nicht über den Compiler hinausbekommen. Also, wenn es für dich kompiliert, mehr Macht für dich. :) – akroy