NameSpaces vs. header files

DerStauner

Erfahrenes Mitglied
Ich hätte mal eine Frage:

ich habe ein Typ namens "Person" in einer h-Datei deklariert (zuerst struct, dann typedef).

Nun, wenn ich diese in einer anderen c++-Datei benutzen möchte, dann kommt die Zeile #include person.h, und ich kann schreiben "Person TemplatePerson"

Aber was bringt das, wenn ich die h-Datei mit "namespace MyPerson{}" beginne?

Und im Code in der c++-Datei kommt dann "MyPerson::Person TemplatePerson"

So, die Grundfrage: wozu sind namespaces gut?
 
Hi.
Ich hätte mal eine Frage:

ich habe ein Typ namens "Person" in einer h-Datei deklariert (zuerst struct, dann typedef).

Nun, wenn ich diese in einer anderen c++-Datei benutzen möchte, dann kommt die Zeile #include person.h, und ich kann schreiben "Person TemplatePerson"

Aber was bringt das, wenn ich die h-Datei mit "namespace MyPerson{}" beginne?

Und im Code in der c++-Datei kommt dann "MyPerson::Person TemplatePerson"

So, die Grundfrage: wozu sind namespaces gut?
Von Suchmaschinen hast du noch nichts gehört? ;-]

Evtl. sagt dir ja ein Beispiel etwas:
C++:
#include <string> // std::string

namespace nonstd {
  class string {
  ...
  };
}

std::string s1 = "abc";
nonstd::string s2 = "xyz";
Wozu nun die Namensräume? Ohne Namensräume könntest du nicht beide Klassen namens "string" benutzen, da würde sich der Compiler beschweren. Vor allem ungünstig wenn man 2 Bibliotheken verwenden will (die man nicht ändern kann) und die Klassen mit gleichem Namen ohne Namensräume verwenden.

Gruß
 
Zurück