Globale Variable verändern...oder gehtz anders?
-
ja hatte mich nur verschrieben!
-
Du hast hoffentlich in Unit2.cpp auch Unit1.h eingebunden?
-
ja hab ich gemacht.....

-
groovemaster schrieb:
Du hast hoffentlich in Unit2.cpp auch Unit1.h eingebunden?
Das gleiche gilt natürlich auch für Unit1.cpp und Unit2.h bzgl. der Funktion Quit.
-
ja ich hab alles included!!!

Weiß echt nimmer weiter!
-
was ich auch gemerkt habe, egal was ich extern mache...da bringt er immer einen linker_fehler!
Und komisch ist auch der sachverhalt:
GLobale Variable in Unit2.h--->Diese Variable kann ich in Unit1.cpp(Hauptprogramm verändern)....aber in Unit2.cpp (eine Funktion) kann die Variable nicht verändern....
-
ich geb euch mal ein besiepiel:
File1.h
#ifndef FILE1H #define FILE1H int test2; #endifUnit2.h
#ifndef Unit2H #define Unit2H int test; void Getit(); //--------------------------------------------------------------------------- #endifUnit2.cpp
#include "Unit2.h" #include "File1.h" using namespace std; //--------------------------------------------------------------------------- void Getit() { cout<<::test<<" "<<::test2<<endl; } #pragma package(smart_init)Unit1.cpp
#include "File1.h" #include "Unit2.h" using namespace std; //--------------------------------------------------------------------------- #pragma argsused void Getit2() { cout<<test<<" "<<test2<<endl; } int main(int argc, char* argv[]) { test=1; test2=2; Getit(); Getit2(); getch(); return 0; }Ausgabe:
0 0 1 2sollte aber so sein..
1 2 1 2was mach ich falsch??
-
Dein letztes Beispiel dürfte nicht funktionieren.
Grund:
Zuerst wird Unit1.cpp kompiliert Du includierst beide Header => die symbole test und test1 sind in Unit1.o definiert.
Dann wird Unit2.cpp kompiliert, wiederum sind beide Header includiert. test und test1 werden auch in Unit2.o definiert.
Dann soll der linker aus Unit1.o und Unit2.o eine .exe erstellen. Er beschwert sich das test und test1 doppelt vorkommen.
Ausweg:
Du declarierst die variablen in den Headern als extern. Und definierst test in File1.cpp und test2 in Unit2.cppKurt
-
ok, probiers mal aus!
-
Dancing_ric schrieb:
was mach ich falsch??
Du solltest dir die Beiträge auch durchlesen. net und volkard haben doch bereits geschrieben, dass in die ÜE die Definition, in die Headerdatei die Deklaration gehört.