Globe Variablen
-
ICh möchte gerne ( auch wenn globale Variablen ja nicht so häufig vewrwendet werden sollten) eine Headerdatei mit globalen Variablen erstellen, die ich dann nurnoch in mien Projekt einbinden muss. ormalerweise habe ich das immer so gemacht, dass ich zu jeder der Variablen noch ein extern+ Variablenname in das Projekt geschreiben habe. Aber das muss doch auch irgendwie einfacher gehen.... Kann man vielleicht alle Variablen einer Headerdatei beim Einbinden automaisch auch als extern einfügen lassen? Oder was gibt es da für Möglichkeiten
-
Da sowas das Gegenteil von "best practice" ist, besteht überhaupt kein Bedarf
sowas auch noch einfach(er) zu machen.

-
Es geht mir grade nicht darum, dass es besonders gut funktioniert, sondern b es überhaupt geht. Deiner Aussage entnehme ich, dass es nicht geht. Dann eine darauf folgene Frage. Ich habe ein Projekt, dass aus ca.6 Dateien besteht. In allen Dateinen müssen bestimmte Variablen verfügbar sein. Würde ich das dann mit Parametern von FUnktionen umsetzen? Und würde es funktionieren, dass man mit Hilfe einer Init FUnktion bestimmte Variablen in allen Bereichen zugänglich macht? ALso ich meine, dass in der Main-Datei eine Variable erstellt wird. Ich übergebe einen Zeiger darauf an eine Funktion und diese speichert die "Adresse" der Variable in einer weiteren Zeigervariable in der 2. Datei. Könnte ich dann mithilfe dieses Zeigers immer die aktuellen Werte dieser Variable auslesen und diese auch verändern?
-
Hallo
Vielleicht solltest du dir mal Singleton anschauen.
chrische
-
Wie Singeltons grundsäztlich funktionieren ist mir klar, aber könnte vielleicht jemand einmal ein Beipiel schreiben, bei dem dadurch der Variblenaustausch zwischen 2 Dateien ermöglicht wird?
-
Hallo
Du könntest dir einen generischen Singleton anlegen und dazu eine Klasse in der du die Variablen hälst. Nun greifst du eben über das Singleton auf die Variablen zu. Du könntest die Daten auch in einer Datei speichern und von dort auslesen.
chrische
-
Zorakh schrieb:
...aber könnte vielleicht jemand einmal ein Beipiel schreiben, bei dem dadurch der Variblenaustausch zwischen 2 Dateien ermöglicht wird?
du hast in irgendeiner .cpp-datei die globale variable int a;
dann legst du dir eine .h datei an mit dem inhalt: extern int a;
wenn du diese .h-datei in andere .cpp-dateien #includierst, kannst du von dort auf die selbe globale variable zugreifen, als hättest du sie direkt dort angelegt. selbstverständlich kannst du beide dateien (also die, in der die variable angelegt wird und die .h mit der definition) um beliebig viele variablen erweitern.

-
Könnte vielleicht jemand mal ein Beispiel für die Singletons posten?
-
Hallo
Streng dich doch mal etwas an. Wenn du weißt, was Singletons sind, dann sollte das zu machen sein.
chrische
-
Gut dann formuliere ich die Frage anders. Ich erzeuge eine Singleton-Klasse( DIese hat, wie das eben so ist, eine statische Variable in der Klasse, die einen Zeiger auf eine andere Klasse aufnehmen soll. Das klappt auch gut. Ich binde meine Datei singleton.hpp in den Quelltext ein und erstelle eine Klasse, die von der Singleton-Klasse erbt. Die Variable nimmt auch wunderbar den Wert des Zeigers an( Also funktioniert auch folgendes CTestKlasse::Get->Testfunktion[wobei Get einfach nur den Zeiger zurückliefert,, wenn dieser bereits existiert])
Meine Frage ist nun:Ich habe jetzt eine Datei mit der Singleton-Klasse und eine mit der Klasse, die von der Singleton-Klasse erbt, also die in der letzendlich die Variablen stehen sollen.
Aber welche Datei muss ich jetzt in mein Projekt einbinden, wenn ich die Variablen aus der CTestKlasse nutzen möchte? Die Datei, in der Ich die Singleton-Klasse geschrieben habe, oder die Datei in der die Klasse, die erbt definiert wird. Es geht ja letzendlich darum, dass man dann, wenn man die richtige Datei einbindet einfach CTestKlasse::Get->Testvarialbe=5; machen kann oder? Wenn nicht dann verwechsle ich SIngeltons und bitte um eine Erklärung. Wenn das soweit richtig ist, welche Datei muss ich einbinden?
-
Hallo
Du musst natürlich die Datei inkludieren, die von Singleton geerbt hat, weil in ihr ja die Variablen stehen. Das kann man doch aber auch probieren. Dann solltest du in der Klasse, wo das inkludiert wurde einfach auf die Variablen zugreifen können.
chrische