Warum include in .h und .cpp ?
-
Peinlich isses mir schon... jetzt muss ich aber endlich mal fragen und dem Unwissen ein Ende setzen - das wird ja sonst nur noch peinlicher
Wenn ich über "Unit-Header einschliessen" ein Unit einbinde schreibt der BCB mir z.B. #include "CopyThread.h" in das cpp-file meiner Form1. Will ich daraufhin im Header von Form1 CopyThread* MyCopyThread deklarieren erkennt er das nicht als Typ. Erst wenn ich auch im Header-File CopyThread.h include klappt es.
Ok, es klappt, aber ich frage mich schon warum/ob ich das jetzt doppelt includen muss und falls ja, warum der BCB das dann nicht direkt mit macht.
Kann mir das jemand erklären, bzw, was mach ich falsch ?
mfG
robi1806
-
Wenn man ein Include in die cpp schreibt gilt es nur für diese datei, wenn man es in den header schreibt gilt es für alle dateien die diese header-datei einbinden, also z.B. die cpp die zum header gehört.
Deswegen kannste wenn du das include in die header schreibts das aus der cpp löschen.
Ein include in der header-datei ist aber nur notwendig wenn du typen daraus in der header deklarieren willst, ansonsten würde ichs in die cpp packen, da sonst automatisch jede datei die diese header-datei einbindet auch alle includes der header-datei mit einbindet.
-
Einleuchtende Erklärung, vielen Dank.
-
robi1806 schrieb:
...Wenn ich über "Unit-Header einschliessen" ein Unit einbinde schreibt der BCB mir z.B. #include "CopyThread.h" in das cpp-file meiner Form1. Will ich daraufhin im Header von Form1 CopyThread* MyCopyThread deklarieren erkennt er das nicht als Typ. Erst wenn ich auch im Header-File CopyThread.h include klappt es.
robi1806Wenn du über Unit-Header einschliessen includierst steht das normalerweise unterhalb von #include Unit1.h
Deshalb kann er in der Header den Typ nicht erkennen. Verschieb doch mal dein #include "CopyThread.h" nach oberhalb. Dann sollte es funktionieren.Viel Erfolg....