extern bool
-
Hi,
ich wollte (außerhalb einer Klasse), eine boolsche Variable für andere Klassen zugänglich machen (genauso hatte ich es auch schon mit einem Vektor gemacht).
Nur jetzt meckert er in der Klasse, von der aus ich auch die Varibale zugreifen möchte, dass er die Varibale wohl nicht kennt (undefined reference).Woran könnte das nur liegen?
MfG, Ozzy
-
Daran, dass er die Variable nicht kennt.
-
Hast du die Variable denn auch irgendwo definiert?
-
Ja, natürlich!
extern bool r1_read_acc;deshalb wundert es mich, dass er sie nicht kennt...
MfG, Ozzy
-
Dort hast du die Variable deklariert. Quasi allen gesagt "hier gibt es irgendwo ein bool namens rl_read_acc". Die Definition ist ohne extern und darf pro fertigem Programm nur einmal vorkommen.
-
Ozzy schrieb:
Ja, natürlich!
extern bool r1_read_acc;deshalb wundert es mich, dass er sie nicht kennt...
MfG, Ozzy
Das ist eine Deklaration, kein Definition.
-
Aha, also anders als beim Vektor...
Also außerhalb der Klasse einfach das bool hastenichtgesehen, und das nur 1x im Programm, und fertig bin ich; richtig?MfG, Ozzy
-
Ozzy schrieb:
Hi,
ich wollte (außerhalb einer Klasse), eine boolsche Variable für andere Klassen zugänglich machen (genauso hatte ich es auch schon mit einem Vektor gemacht).
Nur jetzt meckert er in der Klasse, von der aus ich auch die Varibale zugreifen möchte, dass er die Varibale wohl nicht kennt (undefined reference).Woran könnte das nur liegen?
MfG, Ozzy
falls du eine IDE verwendest musst du alle dateien (alle header, cpp) zum projekt hinzufügen. die fehlermeldung hat mir auch schon kopfzerbrechen bereitet aber neulich gabs dazu nen thread (das problem kann, wie beschrieben, aber auch woandersher kommen).
-
Ozzy schrieb:
Aha, also anders als beim Vektor...
Nein, das gilt für alle Variablen, auch solche vom Typ vector.
Also außerhalb der Klasse einfach das bool hastenichtgesehen, und das nur 1x im Programm, und fertig bin ich; richtig?
Ja.
-
Hm, merkwürdig, dass es dann beim Vektor ohne Probleme funktioniert...
MfG, Ozzy
-
Hi,
wenn ich das in der Header global außerhalb der Klasse angebe, sagt er mir immer, dass ich es schon einmal vorher definiert wurde, was aber nicht stimmt. Kann man das denn theoretisch so machen?
Also, um noch einmal das Problem zu schildern: ich habe verschiede Klassen in verschiedenen Dateien, und möchte eine Variable für andere Klassen, in anderen Dateien zugänglich machen.
MfG, Ozzy
-
Hallo,
du musst Deklaration und Definition trennen, d.h. du schreibst einmal in einen Header, den du überall inkludierst, wo die Variable bekannt sein soll:// deinHeader.h extern bool foo;Damit hast du foo deklariert. Jetzt musst du foo noch definieren und zwar genau einmal. Dazu schreibst du in einer cpp-Datei:
// eineCppDatei.cpp #include "deinHeader.h" bool foo = 42; // oder jeden anderen initialen Wert.Die Cpp-Datei muss natürlich am Ende mit übersetzt und gelinkt werden.
Und btw: es gibt keine Ausnahme für Vektoren. Wenn sich das bei dir so präsentiert, dann machst du etwas anderes.
-
Jo,
mein Fehler (mal wieder): ich hatte die boolsche Varibale vergessen in der cc-Datei zu definieren...
Vielen Dank noch einmal für Eure Geduld!!!
MfG, Ozzy