In all unseren C ++ - Kursen setzen alle Lehrer immer using namespace std;direkt nach dem #includes in ihre .hDateien. Dies scheint mir seitdem gefährlich zu sein, wenn ich diesen Header in ein anderes Programm einbinde, wird der Namespace in mein Programm importiert, möglicherweise ohne es zu merken, zu beabsichtigen oder zu wollen (die Aufnahme von Headern kann sehr tief verschachtelt sein).
Meine Frage ist also doppelt: Habe ich Recht, dass using namespacesie nicht in Header-Dateien verwendet werden sollte, und / oder gibt es eine Möglichkeit, sie rückgängig zu machen, etwa:
//header.h
using namespace std {
.
.
.
}
Noch eine Frage in die gleiche Richtung: Sollte eine Header-Datei #includealle Header enthalten, die die entsprechende .cppDatei benötigt, nur diejenigen, die für die Header-Definitionen benötigt werden, und die .cppDatei #includeden Rest oder keine lassen und alles deklarieren, was sie benötigt extern?
Die Argumentation hinter der Frage ist dieselbe wie oben: Ich möchte keine Überraschungen beim Einfügen von .hDateien.
Wenn ich recht habe, ist das auch ein häufiger Fehler? Ich meine in der realen Programmierung und in "echten" Projekten da draußen.
Danke dir.
using namespaceAnweisungen Namenskollisionen erhalten, können Sie den vollständig qualifizierten Namen verwenden, um das Problem zu lösen.