Seite 1 von 1
bestimmte variablen global verfügbar...
Verfasst: 2. August 2012 15:01
von DBGTMaster
Hallo,
nehmen wir an, wir haben eine Applikation, wenn diese mit dem Paramter -x aufgerufen wird, sollen bestimmte Methoden / Funktionen bestimmte Aktionen ausführen...
Wie würdet ihr das am besten umsetzen, so das ich in den jeweiligen Methoden überprüfen kann, ob Parameter gesetzt??
Re: bestimmte variablen global verfügbar...
Verfasst: 2. August 2012 17:19
von DBGTMaster
Was ich gedacht habe, ist, eine Art Registry zu bauen, welche Anwendungsweit verfügbar ist..
main.cpp:
andereDatei.cpp:
Code: Alles auswählen
if (Registry::get("xModeEnabled").toBool()) {
doSomething();
}
Oder gibt es bessere Ideen?
Re: bestimmte variablen global verfügbar...
Verfasst: 2. August 2012 21:19
von upsala
Ich habe ein ähnliches Konzept in einem Java-Programm umgesetzt und habe irgendwann festgestellt, daß es weniger Fehleranfällig ist, Konstanten zu verwenden statt Strings als Schlüssel. (Wobei man beide Möglichkeiten auch mischen könnte).
Re: bestimmte variablen global verfügbar...
Verfasst: 4. August 2012 12:47
von DBGTMaster
was heißt "so ähnlich" gelöst? Mir würde dein genauer Lösungsweg interessieren....
lg
Re: bestimmte variablen global verfügbar...
Verfasst: 4. August 2012 18:58
von franzf
Er schrieb doch nicht "so ähnlich gelöst" sondern "ein ähnliches Konzept"
Generell:
Wenn du (sich zur Laufzeit ändernde) Informationen an zentraler Stelle speicherst und diese an mehreren unabhängigen Stellen im Programm brauchst, hast du zwei Optionen:
1) Zugriff über Singleton/globale Variable/statische Funktionen/...
2) Das entsprechende Objekt (objekt)lokal speichern und eine Referenz darauf herumreichen.
1) ist die einfachere Lösung, da 2) einen recht tiefen Eingriff in bestehende Projekte bedeuten würde und einen gewissen API-Overhead erzeugen kann.
Dafür ist 2) aus OOP-Sicht die schönere Lösung: Halte Objekte so lokal wie möglich. Wenn man immer den einfachsten Weg sucht, macht man am Ende für alles was man nur einmal braucht die Lösung 1), dann kann man aber auch gleich C programmieren
