2010-04-05 13 views
6

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

5

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.

+4

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

+3

Ich benutze eine Menge von Strukturen, die Implementierungsdetails sind - diese sind in den CPP-Dateien deklariert –

+1

-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. –

2

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.

Verwandte Themen