C++ Tutorial

 Namensräume

Mithilfe von Namensräumen kann die Sichtbarkeit von Namen explizit spezifiziert werden, so dass gleichnamige Daten und Symbole nicht zu einem Übersetzungsfehler führen. Ein Namesraum, der Namensraum std der C++-Standardbibliothek, wurde in den vorherigen Kapiteln schon häufig verwendet.

Definition

Ein Namensraum wird wie folgt definiert:

namespace spaceName
{
   // Hier die Daten und Funktionen definieren
}

D.h., nach dem Schlüsselwort namespace folgt ein frei wählbarer Name für den Namensraum und anschließend ein Paar geschweifter Klammern. Innerhalb der Klammern werden die Daten und Funktionen definiert, die in diesem Namensraum eingeschlossen werden.

Ist ein Namensraum innerhalb eines Blocks {...} definiert, ist er nur innerhalb des Blocks gültig.

Wird ein Namensraum mehrfach, aber mit unterschiedlichen Daten und Funktionen, definiert, so wird dieser entsprechend erweitert, d.h. Namensräume sind additiv.

Zugriff auf Namensraum

Um auf die Daten und Funktionen in einem Namensraum zuzugreifen, wird der Name des Namensraums, dann zwei Doppelpunkte und anschließend das Datum bzw. die Funktion angegeben.

#include <iostream>
#include <format>

// Namensraum cpp definieren
namespace cpp
{
   int ivar = 99; // Datum im Namensraum
   // Funktion im Namensraum
   // Gibt in Inhalt des Datums im Namensraum aus
   void PrintVar()
   {
      std::cout << std::format("cpp::PrintVar()\n\tnamespace ivar: {}\n",ivar);
   }
}

// Globales Datum
int ivar = 10;
// Globale Funktion
void PrintVar()
{
   // Ausgabe des globalen Datums
   std::cout << std::format("PrintVar()\n\tGlobales ivar: {}\n",ivar);
   // Ausgabe des Datums aus dem Namensraum cpp
   std::cout << std::format("\tnamespace ivar: {}\n",cpp::ivar);
}

int main()
{
   // Aufruf der globalen Funktion
   PrintVar();
   // Aufruf der Funktion im Namensraum cpp
   cpp::PrintVar();
}