So in etwa. Ich habe nun in der main.h eine globale Variable deklariert, auf welche ich in allen cpp's Zugriff darauf haben muss. Also habe ich die main.h sowohl in der main.cpp, als auch in der class1.cpp und der class2.cpp includiert. Da ich Objekte der 2 Klassen in der main.cpp erstellen muss hab ich in der main.cpp class1.h und class2.h inkludiert.
Dies führt beim Linken zu bereits definierten Objekten... Irgendwie sagt mir das auch die Logik. Die Frage ist wie mach ich es dann. Lass ich irgendeines dieser includes weg, komm ich nichtmal zum linken. Also was tun? Zum Besseren Verständnis hier wie die includes aussehen:
DATEI main.h
C++:
// Keinerlei includes
int g_iTestvariable;
DATEI main.cpp
C++:
// Grundlegende includes wie <stdio.h> usw #include"main.h" #include"class1.h" #include"class2.h"
// weiterer Quellcode in welchem ich auch auf g_iTestvariable zugreife
DATEI class1.h bzw. class2.h
C++:
// keinerlei includes lediglich Klassendeklaration
DATEI class1.cpp bzw. class2.cpp
C++:
#include"main.h" #include"class1.h"
// Weiterer Code in welchem ich auf g_iTestvariable zugreife
So ich hoffe das war jetzt halbwegs verständlich und ihr könnt mir evtl helfen. Fehler sieht folgendermaßen aus:
error LNK2005: "int g_iTestvariable" (?g_iTestvariable@@3HA) ist bereits in main.obj definiert
Ich wär übrigens äußerst vorsichtig mit globalen Variablen, die schießen dir jede Threasicherheit zum Mond. In 99.99% aller Fälle ist sowas ein Designfehler. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra