Einschließlich Header und Main.h
Ok, nicht sicher, ob dies der richtige Weg ist oder sogar die richtige Art, aber ich habe es gesehen und begonnen, es zu benutzen, Sagen, Sie haben 6 Dateien
main.cpp
main.h
car.cpp
car.h
speed.cpp
speed.h
- 1. - sollten Sie je ein Haupt.h?
- 2. wenn main.h #include Auto.h und #include-Geschwindigkeit.h dann in
car/speed.cpp Sie haben zum hinzufügen von #main.h (so würde es
gehören Auto/Geschwindigkeit.h) - 3. - sollten Sie jemals diesen Weg gehen?
Inklusive* nicht Includeing, für einige Grund, dass ist sowas von nervig, bitte ändern Sie es.
InformationsquelleAutor Glen Morse | 2013-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
#include
minimalistisch. Der Grund hinter einem gehören sollte sein, dass, wenn entfernt, wird der code nicht kompiliert.Nicht
#include
wenn Sie können vorwärts-deklarieren. Wenn "Klasse A;" genügt nicht#include a.h
.Insbesondere, lieber forward-deklariert in der header-Dateien, Vermeidung von verschachtelten umfasst die Erzeugung stark gekoppelter mega-include-Dateien.
Siehe auch Autark-header-Dateien, in einer ähnlichen Frage.
Ich bin damit einverstanden. Enthalten alles, was Sie brauchen, und nur, was Sie brauchen.
"Nicht #include, wenn Sie können vorwärts-deklarieren. Wenn "Klasse A;" genügt nicht #include ein.h." - Stimme überhaupt nicht zu... sagen die "a" - Bibliothek ändert Einen zu
template <typename T> class basic_A...
dann bietettypedef basic_A<int> A;
... Ihr bauen, nur brach unnötig. "A"'s Besitz gehört mit der "a" - Bibliothek, und die Deklaration in einem.h - wenn nötig "ein" aufspalten sollten Sie sich eine leichte vorwärts-Deklaration header (Präzedenzfall in der Standard -<iosfwd>
), aber man sollte niemals erklären, ohne ein "a" - header.Ich denke nicht, dass dies ein sehr häufiges Szenario. Jedenfalls, wenn ich die Kennung "A" in einer so radikalen Weise, bricht der build ist nur eine Natürliche Folge.
danke, nicht sicher, warum jemand würde dies moniert Frage, aber was immer ich auch schon meine Antwort 😀
InformationsquelleAutor Daniel Daranas
1) Nur, wenn Sie brauchen, um etwas in
main.cpp
zu anderencpp
Dateien, also hängt davon ab, was es hat.2) Möglich, aber nicht empfohlen.
3) Für eine Reihe von Gründen (code, design, Kompilierung, etc.), die Sie einschließen möchten so wenig wie nötig. Zusätzlich, der convention für Ihre Klasse
.h
und ein.cpp
und für einen direkt zu den anderen gehören. Sie sollten auch versuchen, um eine Kopfzeile einzufügen, die in Ihrem.cpp
Dateien, und versuchen zu vermeiden, einschließlich Header Header wo es möglich ist.InformationsquelleAutor Karthik T
Nicht in der Regel gibt es keine
main.h
. Ich glaube, es ist eine gute Praxis, um alle Header, die Sie in der Quell-Datei nicht nur in der Kopfzeile. Wenn du dich auf die überschriften umfassen alles, was Sie brauchen, kann es passieren, dass eine änderung in einer header bricht Ihrer Quelldatei.InformationsquelleAutor Ivaylo Strandjev
Ist es nicht typisch, um eine "main.h" - aber es ist sicher keine Regel, die es verbietet.
Was muss enthalten sein und wie Sie das erreichen, hängt wirklich davon ab, was die jeweiligen Klassen machen, welche Kenntnisse der jeweils anderen, die Sie brauchen.
Es ist generell eine schlechte Idee zu haben, "eine include-Datei, die alles beinhaltet, sonst" - in dem Stil, den Sie beschreiben. Aus mehreren Gründen:
1. Es ist schwer zu sehen, welche Quellcode-Datei hängt davon ab, welches umfasst.
2. Sie bekommen mehr Kompilierung Zeit, da der compiler hat zu Lesen durch eine Reihe von Klassendefinitionen, die nicht verwendet wird.
3. Man kann nicht einfach, sagen wir, "Autos.h" und "car.cpp" und halten Sie diese in einem anderen Projekt ohne " - Geschwindigkeit.h".
InformationsquelleAutor Mats Petersson
Sehr selten.
main.cpp
bedeutet es kompiliert die übersetzungseinheit enthältmain()
, die in der Regel client-code für andere Low-level-Bibliotheken, die nicht benötigen, um wissen über die Symbole inmain()
. Wenn die Dinge irgendwie bekam zyklisch in Ihrem design, und es gab guten Grund (massive Zeitdruck?) nicht aufteilen möchten, in einer separaten.cpp
, dann könnten Sie am Ende mit einemmain.h
. Das sollte eigentlich nur erklären, dass die Symbole main.cpp anderen übersetzungseinheiten brauchen könnte Zugang zu. Spezifisch, es sollten keine Auto.h und/oder Geschwindigkeit.h, es sei denn auszusetzen main.h-Funktionen müssen Auto.h oder Geschwindigkeit.h Erklärungen - zum Beispiel eine Erklärung der Funktion in main.cpp das hat die Argumente der Typen aus dem Auto.h oder Geschwindigkeit.h.Wie oben, ist es fast sicher ein sehr gebrochenes design: main.cpp erwarten würde, gehören Auto.h und Geschwindigkeit.h direkt, und wenn Sie nicht wollen, zu tun, und ein higher-level-header ist erforderlich für das Auto.h und Geschwindigkeit.h, es sollte benannt werden, basierend auf deren übergreifendes Thema (z.B. Verkehr.h), nicht benannt nach dem bestimmten client, der will, dass der Zugriff auf beide. Denken Sie daran, die wichtigsten.h sollte nur existieren, wenn es notwendig ist, zu entlarven, die Dinge aus main.cpp.
Wohl nicht, angesichts dessen, was ich schon oben erklärt.
InformationsquelleAutor Tony Delroy
Sollten Sie die header-Datei für Quellcode-Dateien, die Sie möchten in Ihrem code verwenden. Daher ist es unwahrscheinlich - nicht unmöglich - Sie haben eine main.h-header, da in beiden car.cpp und speed.cpp Sie wahrscheinlich nicht gehören Funktionen, die Sie erklärt haben, in main.cpp. Im Gegensatz dazu könnten Sie umfassen die Funktionalität von car.cpp und speed.cpp in in main.cpp und dafür möchten Sie auch Ihre Header in Ihrem mainfile.
InformationsquelleAutor hetepeperfan