Header-Dateien
-
Hallo,
ich habe mal eine Frage die zuächst etwas trivial klingt:
In allen meinen jahrelangen Projekten habe ich wohl einen Denkfehler hinsichtlich einbinden von Headerdateien in VCc-Projekten gehabt... Oder?
Mein Problem: Ich habe einen Democode bekommen, der funktioniert, diesen Code wollte in Teilen in ein eigenes Projekt integrieren, was aber zu Fehlern führt.Democode
4 Dateien
dialog.h
dialog.cpp
tab.h
tab.cppdialog.h und tab.h sind included in dialog.cpp
Das Objekt in tab.h wird in dialog.h abgeleitet um es innerhalb des Objektes vom dialog zu verwenden.
Wenn ich das in einem eingenen Projekt machen würde, wirft der Compiler den Fehler C2146 da er den Typ nicht kennt. In dem Democode funktioniert das einwandfrei und lässt sich von meinem Compiler kompilieren. Von der Logik her würde ich sagen, kann der Compiler den Typ in dialog.h nicht kennen. Oder wie? Was haben die im Demoprojekt gemacht, dass es trotzdem klappt?Gruss
Achim
-
Ich kann nur raten, solange du den Code nicht zeigst:
Forward deklaration der Klasse? Und Include in der .CPP-Datei?
-
Den Code zu zeigen ist etwas zu umfangreich. Aber das Beispiel ist einfach:
http://www.codeproject.com/KB/tabs/SimpleTab.aspx
Ich habe die Includes in den entsprechenden CPP Dateien.
tab.h in tab.cpp
tab.h und dialog.h in dialog.cppForward Deklaration könnte sein, habe ich aber nicht entdeckt.
Gruss
Achim
-
Wenn die Klasse in dialog.h von tab.h abgeleitet ist, muss tab.h auch in dialog.h included werden.
-
Richtig Martin!
aber warum klappt das im Democode ohne den entsprechenden Include?
-
ARoh schrieb:
Richtig Martin!
aber warum klappt das im Democode ohne den entsprechenden Include?
Weil tab.h vor dialog.h included wurde...
-
ARoh schrieb:
Richtig Martin!
aber warum klappt das im Democode ohne den entsprechenden Include?
Weil evtl. tab.h vor dialog.h included wurde.