namespace

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Schlüsselwörter alphabetisch - Index



Kategorie

C++-spezifische Schlüsselwörter

Beschreibung

In der Regel besteht eine Anwendung aus mehreren Quelltextdateien. Diese Dateien können wiederum von mehreren Entwicklern erstellt und bearbeitet werden. Die verschiedenen Dateien werden schließlich zum Endprodukt zusammengestellt und gelinkt. Die Dateiorganisation macht es normalerweise erforderlich, dass alle Namen, die nicht in einem definierten Namespace gekapselt sind (wie z.B. der Rumpf einer Funktion oder Klasse oder eine Übersetzungseinheit), denselben globalen Namespace verwenden. Daher müssen die beim Linken der einzelnen Module gefundenen verschiedenen Namensdefinitionen irgendwie unterschieden werden. Dieses Problem der Namenskonflikte im globalen Gültigkeitsbereich löst der Namespace-Mechanismus von C++.

Der Namespace-Mechanismus sieht die Unterteilung der Anwendung in mehrere Subsysteme vor. Jedes Subsystem kann innerhalb seines eigenen Gültigkeitsbereichs Bezeichner definieren und damit arbeiten. Entwickler haben so die Möglichkeit, beliebige Bezeichner einzusetzen, die innerhalb des Subsystems sinnvoll erscheinen. Sie müssen sich nicht darum kümmern, ob diese Bezeichner bereits von anderen Entwicklern verwendet werden. Der Gültigkeitsbereich des Subsystems wird anwendungsweit durch einen eindeutigen Bezeichner festgelegt.

So verwenden Sie einen Namespace:

  • Definieren Sie einen Namespace mit dem Schlüsselwort namespace, und schreiben Sie den inneren Code.
  • Greifen Sie aus dem definierten Namespace mit dem Schlüsselwort using oder durch Angabe des Namespace mit dem Zugriffsbereichsoperator auf die Symbole zu.
Beispiel:
struct A { void foo(); }; // #1
struct B { void foo(); }; // #2
struct C : A, B  {
  void callfoo() {
      foo(); //error:  ambiguous
      B::foo(); // picks #2
    }
};

Siehe auch