Variable "dateiübergreifend" deklarieren
-
Hi, nach einer längeren Pause habe ich mich dazu entschieden, eines meiner alten Projekte zu erweitern.
Um die Sache übersichtlicher zu gestalten, ist das Projekt (vereinfacht) so aufgeteilt worden:
Header.h
Code1.cpp
Code2.cppIn Header.h wird eine Klasse definiert.
In Code1.cpp wird eine Instanz dieser Klasse deklariert und definiert (aber nicht sofort definiert, sondern erst in einer bestimmten Funktion aus Code1.cpp), außerdem werden Funktionen aus Code2.cpp verwendet.Meine Frage ist nun, wie ich es schaffe, diese Klassenvariable aus Code1.cpp auch in Code2.cpp zu verwenden. Mir geht es im Moment vor allem darum, eine saubere Lösung zu finden, daher bin ich noch etwas vorsichtig mit meinen eigenen Ansätzen.
Schonmal vielen Dank für eure Hilfe.
MfG JohnnyBoy
-
Was haben die beiden .cpp-Dateien für eine Beziehung zueinander?
Nehmen wir an, du hast in Code1.cpp eine Funktion, in der deine Klassenvariable deklariert wird. In Code2.cpp hast du eine andere Funktion, die diese nutzen soll.
// Code1.cpp void Func1() { MyClass a; Func2(a); } // Code2.cpp void Func2(MyClass& Var) { Var.DoSomething(); }Nun ist das Problem, dass erstens die Klasse
MyClassin beiden Dateien bekannt sein muss, was aber durch den Header gegeben sein sollte. Im Weiteren muss in Code1.cpp die FunktionFunc2()deklariert sein. Die Deklaration führst du am besten ebenfalls im gemeinsamen Header durch. Soweit klar?
-
Ja, das wäre eine schöne Möglichkeit. Aber die beiden Dateien strotzen nur so vor Funktionen und ich will die vielen Funktionsköpfe und Funktionsaufrufe ungern so anpassen müssen, dass da Platz für die Klassenvariable ist. Gibt es keine Alternative, bei der ich in Code1.ccp die Variable definiere und sie dann dennoch einfach in Code2.cpp bekannt ist?
-
Du willst sie global? Doch, das ist möglich, aber davon rate ich dir wirklich ab. Du schaffst dir damit nur unnötige Abhängigkeiten und kannst nicht mehr kontrollieren, von wo aus die Variable geändert werden kann. Glaub mir, das kann das Debuggen zur Hölle machen. Richtig schlimm wird es, wenn das Projekt grösser wird, von daher würde ich mir solchen Stil gar nicht erst angewöhnen. Mach lieber einen Parameter mehr.
Falls du meine Hinweise dennoch leichtfertig ignorieren möchtest, kannst du im Header eine Deklaration der Variablen (mit
extern) vornehmen und diese in einer .cpp-Datei definieren. Aber ich habe dich gewarnt...
-
Singletons würden sich für so etwas auch eignen, aber auch hier sei Vorsicht geboten und kann schnell zu "faulem" Design führen, wo alle alles kennen.
-
Naja gut … will ja brav sauber bleiben, auch wenn mir nachher wohl die Finger wehtun

Aber nochmal danke für die Hilfe, hat mir geholfen