Variable aus anderer Sourcedatei gültig?
-
hi
ich hab vor eine kleine dx klasse zu schreiben und hab eine kleine Frage.
Wenn ich jetzt zB in eine Datei foo.h eine Variable hab, zB int a; - kann ich jetzt in einer anderen Datei bar.h/.cpp die Variable "a" verarbeiten oder gilt da wieder die Gültigkeitsbereichregel?In php war das schon der fall, man konnte mehrere Variablen in der headerdatei deklarieren und sie dann in anderen Dateien verwenden(vorausgesetzt man inkludiert diese).
Nur hab ich das nie benutzt, deswegen interessiert mich das ja so sehr
Mfg
-
Hallo
Benutzen kannst du die im Header deklarierte Variable anderswo schon, nur ist es dann nicht in allen Übersetzungseinheiten dieselbe Instanz. Um auch dieselbe Instanz zu haben must du extern verwenden.
Und nicht vergessen : globale Variablen sind meistens die schlechte Lösung.bis bald
akari
-
hallo akari!
danke für deine antwort!
aber globale variablen werden oft in directx oder opengl tutorials benutzt und deswegen benutz ich sie auch, weil ich keine andere Lösung finde.
-
wieso sind glob. var schlimm?
-
ggaaa schrieb:
wieso sind glob. var schlimm?
Beginnen wir mit dem üblichsten Problem: Der Zugriff erfolgt ohne Kontrolle (Mag nicht so schlimm klingen, bis man einmal Quellcode übernehmen durfte wo intensiv mit globalen Variablen oder "public static"-Membern gearbeitet wurde...)
cu André
-
beispiel wär nett
-
Hallo
Was brauchst du noch für ein Beispiel? Google nach dem Stichwort Datenkapselung, da dürften genug Erläuterungen zu finden sein.
bis bald
akari
-
hi nochmal
anscheinend hab ich ein Problem mit Globalen Variablen und so
Ich habe eine BOOL Variable, zbsp. bool isOk;.
Nun will ich sie irgendwo hindeklarieren, damit sie in folgenden Dateien verwendet werden kann:
-main.cpp(logisch^^)
-loader.cpp(alle dx funcs)und folgende dateien(meistens header) werden nicht für sowas verwendet:
-main.h(includes zu windows,directx und zu der WndProc namens: procedur.h)
-loader.h(steht daweil nix drinnen)
-procedur.h und procedur.cppich hab versucht in ne leere HEADER Datei diese Bool Variable anzulegen und dann in den anderen dateien zu includen, geht aber nicht, hab ich alles versucht. Der Compiler sagt irgendwas dass die variable "isOk" ein nichtdeklarierter bezeichner ist.
bitte hilf mir
-
wenn du was brauchst, was überall das gleiche sein soll, dann kannst du das mit ner singleton klasse machen
-
bruch hilfe
schrieb:
bitte hilf mir
akari schrieb:
Um auch dieselbe Instanz zu haben must du extern verwenden.
was mir auffällt: je n00ber, desto dx :p
-
bdh
schrieb:
aber globale variablen werden oft in directx oder opengl tutorials benutzt und deswegen benutz ich sie auch, weil ich keine andere Lösung finde.
Und nur weil einige Tutorial-Autoren zu faul sind, sich Klassen zu schreiben, machst du das nach? Keine gute Idee ;).
Pack Dir doch die Variablen einfach in eine Klasse/Struct und übergib eine Instanz der Klasse. Und so Dinge wie HWND, HDC, DirectX-Interface etc müssen nicht global sein. Sowas kann man alles schön in Klassen hauen. Und wenn nötig, kannst aus der Klasse ein Singleton machen. Wenns gar nicht anders geht.
rya.