Sollen alle Strukturen und Klassen in der Header-Datei deklariert werden? Wenn ich eine Struktur/Klasse in einer Quelldatei deklariere, was muss ich in die Header-Datei einfügen, damit sie in anderen Dateien verwendet werden kann? Gibt es auch Ressourcen, die einige C++ - Standardpraktiken aufzeigen?Wo deklarieren Strukturen usw.?
Antwort
Sollen alle Strukturen und Klassen in der Header-Datei deklariert werden?
Ja. EDIT: Aber ihre Implementierungen sollten in cpp-Dateien sein. Manchmal erkennen Benutzer aus C# oder Java nicht, dass die Implementierung in C++ vollständig von der Klassendeklaration getrennt sein kann.
Wenn ich eine Struktur/Klasse in einer Quelldatei deklariere, was muss ich in die Header-Datei einfügen, damit sie in anderen Dateien verwendet werden kann?
Sie können nicht. Der Compiler benötigt die vollständige Deklaration einer Klasse, die in einer Übersetzungseinheit verfügbar ist, die diese Klasse verwendet.
Gibt es auch irgendwelche Ressourcen, die einige Standardverfahren von C++ da draußen zeigen?
Sie können einfach herunterladen Quelle für eine beliebige Anzahl von Open-Source-Anwendungen zu sehen. Obwohl die einzige vollständig konsistente Sache, die Sie wahrscheinlich sehen werden, die Verwendung von Header-Wächtern ist und alle Deklarationen in Header-Dateien behält.
Der ganze Sinn von Header-Dateien besteht darin, Schnittstellen zu deklarieren, die für andere Quelldateien freigegeben werden sollen. Oft deklarieren Menschen abstrakte Typen in Header-Dateien und implementieren sie in Quelldateien nach Bedarf. Dies bedeutet natürlich, dass der neu implementierte Typ nur für diese bestimmte Quelldatei verfügbar ist. Wenn Sie einen Typ für mehrere Dateien verwenden müssen (was normalerweise der Fall ist), müssen Sie Header-Dateien verwenden.
C++ faq ist normalerweise eine gute Quelle für Best Practices.
- 1. Wo deklarieren Variable?
- 2. Wo Schnittstellen deklarieren?
- 3. ObjectiveC: Wo private Instanzeigenschaften deklarieren?
- 4. Deklarieren von Strukturen innerhalb von Funktionen in C
- 5. Was nutzt es, anonyme Strukturen innerhalb einer Struktur zu deklarieren?
- 6. Deklarieren von Ganzzahlen, Doppelpunkten, Gleitkommazahlen, Strings usw. im Frühjahr XML
- 7. Wo globale Variable deklarieren? in .h oder.m?
- 8. Wo zu const struct Array zu deklarieren
- 9. Wo muss ich statische Variablen deklarieren?
- 10. Wo finde ich technische Details zu internen JavaScript-Strukturen?
- 11. C Array von Strukturen von Array von Strukturen
- 12. Wo werden globale Variablen wie $ _GLOBAL, $ _POST usw. gespeichert?
- 13. Wo den Datenkontext (Adapter, Verbindung, Sitzung usw.) in MVC instanziieren?
- 14. wo der Speicher zugewiesen, wenn wir statisch deklarieren?
- 15. Swagger 2.0 wo Basic Auth-Schema zu deklarieren ist
- 16. In Code Igniter, wo soll ich meine globalen Variablen deklarieren?
- 17. In einer C# -Lösung, wo deklarieren Sie Lösungsumfang enums?
- 18. Wo ich eine Sitzungsvariable in asp.net deklarieren sollte
- 19. Wie ein 3D von Array von Strukturen in C zuweisen und deklarieren?
- 20. Atomspeicher. Strukturen
- 21. Was bewirkt 'deklarieren' in 'deklarieren von Klassenaktionen deklarieren'?
- 22. size_t, key_t, time_t usw.
- 23. SWIG Verlust von Strukturen
- 24. Sortierlisten, Suchergebnisse usw.
- 25. Organisation von statischen Datentypen (Strukturen)
- 26. Strukturen Array in C
- 27. Wie kann ich Arrays in struct deklarieren?
- 28. Zugriff auf ein Array von Strukturen in anderen Strukturen?
- 29. Nullgrößenvektor deklarieren
- 30. Deklarieren variable
Eine Struktur muss keine Headerdateien sein, wenn nicht beabsichtigt ist, sie in einer anderen Quelldatei zu verwenden. Ein für den STL-Algorithmus geschriebener Funktor ist ein solches Beispiel. – Naveen
Ich benutze eine Menge von Strukturen, die Implementierungsdetails sind - diese sind in den CPP-Dateien deklariert –
-1 Naveen und Neil haben beide Gründe angegeben, warum nicht * ALL * Strukturen in Kopfzeilen deklariert werden sollten. Ja zu den Fragen des OP gibt eine irreführende Antwort, besonders für Neulinge. –