Header- und Source-Files [Anfänger-Frage]

LukeS

Erfahrenes Mitglied

Hallo

Ich lerne gerade C++. Arbeite mit VC++ 6.
Mit den #include-Anweisungen für die Header-Dateinen komm ich noch nicht ganz zurecht.

Dazu ein Beispiel:
Ich habe eine Klasse "Saeugetier"
Davon abgeleitet habe ich die Klasse "Hund"

Meine Files:
Saeugetier.h (mit Deklarationen für die Klasse "Saeugetier)
Saeugetier.cpp (mit Definitionen der "Saeugetier"-Methoden)
Hund.h (mit Deklarationen der von "Saeugetier" abgeleiteten Klasse "Hund")
Hund.cpp (mit Definitionen der "Hund"-Methoden)
Main.cpp (Funktion "main" erzeugt und verwendet ein Hund-Objekt)

Nun zu meinen Fragen:
- Welche Header-Files muss ich in welche Datei einbinden?
- Source-Code-files(.cpp) werden nicht mit #include eingebunden. Wie weiss der Compiler (bzw. Linker), dass diese Files auch irgendwie verwendet werden?
- Angenommen ich verwende "cout" sowohl in "Saeugetier.cpp" als auch in "Main.cpp" wo muss ich die Header-Datei "stdio.h" einbinden

Hoffentlich sind meine Ausführungen klar genug.
Danke für eure Hilfe!
Gruss LukeS
 
Zuletzt bearbeitet:
Hy!

1.)
main.cpp: Hund.h
saeugetier.cpp: saeugetier.h
hund.h: saeugetier.h (da du vererbst)
hund.cpp: hund.h

Auf keinen Fall die Include-Wächer vergessen! (#ifndef...)

2.) Der Compiler weiß das weil die IDE dem Linker beim Aufruf mitteilt welche files er zu linken hat, das macht die IDE mit allen Files die sich im Projekt befinden. Wenn du den Linker händisch starten würdest, müsstest du alle Objekt-Files angeben.

3.) In beiden, allerdings würde ich die <iostream> einbinden, da <stdio.h> der C Header für printf, etc. ist.

mfg
uhu01
 
Vielen Dank!
Ich glaube ich habs jetzt verstanden.
Nur noch eine kleine zusätzliche Frage zur Sicherheit:
Falls ich auch ein Saeugetier-Objekt in "main" erzeugen will, muss ich dann auch "Saeugetier.h" in main.cpp einbinden?


allerdings würde ich die <iostream> einbinden, da <stdio.h> der C Header für printf, etc. ist.
klar... war ein Flüchtigkeitsfehler
 
Hy!

Du müsstest es nicht einbinden, funktionieren würde es auch ohne da die saeugetier.h in der hund.h eingebunden ist. Wenn du allerdings dann kein hund-Objekt in main mehr erzeugst, müsstest du die saeugetier.h wieder extra einbinden.

mfg
uhu01
 
Zurück