#ifndef #define weigern sich - Bin ich bekloppt?!?!?
-
Hallo,
ich habe ein recht einfaches Programm.
2 *.cpp Dateien greifen jede auf ein und dieselbe Header-Datei zu. Da beide die gleiche, dort definierte Klasse benötigen, ist mir nichts besseres eingefallen. In besagtem Header steht (unter anderem) folgender Text:#ifndef VARIABLEN_H #define VARIABLEN_H class feld //Definition der Speicherstruktur eines einzelnen Punktes { public: int id; int x; int y; double z; int empf_feld_id; int entw; }; feld *feldZeiger; //Initialisierung des Zeigers #endifDer Compiler kommentiert das mit
1>DGM_Analyse.obj : error LNK2005: "class feld * feldZeiger" (?feldZeiger@@3PAVfeld@@A) ist bereits in Main.obj definiert.
Ich führe das darauf zurück, dass hier irgendwas mit mit #ifndef nicht klappt, denn in DGM_Analyse, der fehlerproduzierenden Datei, wird (naürlich) kein class feld*feldZeiger (abgesehen vom Header) mehr definiert.
Falls noch mehr Code benötigt wird, kann ich den gerne zur Verfügung stellen.
Danke und Grüße
-
Include Guards schuetzen vor multiplen Definitionen innerhalb einer Uebersetzungs Einheit. Du hast aber ein Problem mit der One Definition Rule.
Die Loesung ist
feld *feldZeiger;aus der header Datei in eine Implementierungsdatei (.cpp Datei) zu ziehen und im Header nur die Deklaration stehen zu lassen:exten feld *feldZeiger;
-
Vielen dank, werde ich mich im Laufe des Sonntags mit auseinandersetzen
