Wie kann ich eine Header-Datei mit einbinden?
-
eigentlich kann man doch per #include "Datei.h" eine Datei mit einbinden. Ich begreife das irgendwie nicht.
Ich habe folgende Header Dateien:
GProggysDlg.h
CDaten.h
c\firmen.h
c\datei.hIn CDaten.h ist eine zusätzliche Klasse vorhanden:
// Nur als Beispiel; class CDaten { public: int x; int y; CString Int2String(int zahl) { CString txt; txt.Format("%d",zahl); return txt; }; };In der Anwendung kann man, je nach Button auf den Firmen-Dialog bzw. Datei-Dialog zugreifen. Die Klasse CDaten möchte ich in beiden Header-Dateien nutzen können, wg. verschiedener Funktionen. Also habe ich in c\firmen.h die Zeile:
#include "..\CDaten.h" ... public: CDaten cdaten; ...eingefügt. Geht ohne Probleme. Wenn ich das gleiche in c\datei.h mache erscheint eine Fehlermeldung:
D:\VisualCData\GProggys\c\..\CDaten.h(1) : error C2011: 'CDaten' : 'class' type redefinition

-
Füge mal am Anfang Deiner Headerdateien includewächter ein:
#ifdef INCLUDE_<DATEINAME.h> // oder irgendwie so
#define INCLUDE_<DATEINAME.h><das ganze Includezeugs>
#endif
alternativ bei VC am anfang ein #pragma once
-
Wenn ich es so angebe
#ifdef INCLUDE_<"..\CDaten.h"> #define INCLUDE_<"..\CDaten.h"> #include "..\CDaten.h" #endifDann gibts Fehler ohne Ende.......
Ich versteh das nicht, andere Dateien kann man so oft "includen" wie man will, nur da klappt was nicht.
-
Jetzt geht es im Moment, und zwar so: Ich habe die #include-Anweisung nach der Klassendefinition geschrieben. Geht das gut so?
... class CGDatum : public CDialog { // Construction public: CGDatum(CWnd* pParent = NULL); // standard constructor #include "..\CDaten.h" // HIER HIN ??? CDaten cdaten; ...
-
Guten Abend !
Probier mal ...
#ifndef _HEADERNAME_H #define _HEADERNAME_H /* Hier jetzt den Code der Headerdatei einfügen */ #endif // Headerfile - EndeDer Ausdruck HEADERNAME steht für den Namen deiner Header Datei.
Gruß Michael
-
Danke Michael__W.! Es geht endlich.
#ifndef _CDaten_H // für die CDaten Klasse #define _CDaten_H #include "..\CDaten.h" #endif
-
Michael__W. schrieb:
Guten Abend !
Probier mal ...
#ifndef _HEADERNAME_H #define _HEADERNAME_H /* Hier jetzt den Code der Headerdatei einfügen */ #endif // Headerfile - EndeDer Ausdruck HEADERNAME steht für den Namen deiner Header Datei.
So wars oben eigentlich gemeint
O
Gruß Michael
-

... Da stand ich wohl auf meiner Leitung ...