Namespace von Strukturen
Nach oben zu Strukturen - Index
Tag-Namen von Strukturen, Varianten und Aufzählungstypen teilen sich denselben Namespace (nur Aufzählungstypen innerhalb von Strukturen haben in C++ einen anderen Namespace). Das bedeutet, dass derartige Tags innerhalb eines Gültigkeitsbereichs eindeutig sein müssen. Doch Tag-Namen müssen sich nicht von den Bezeichnern in den anderen drei Namespaces unterscheiden: Label-Namespace, Element-Namespace(s) und einmaliger Namespace (bestehend aus Variablen, Funktionen, typedef-Namen und Aufzählungstypen).
Elementnamen innerhalb einer Struktur oder Variante müssen eindeutig sein, können sich aber in anderen Strukturen oder Varianten wiederholen. Zum Beispiel:
goto s;
.
.
.
s: // Label
struct s { // OK: Tag- und Label-Namespaces sind verschieden
int s; // OK: Tag- und Label-Namespaces sind verschieden
float s; // UNGÜLTIG: doppelter Elementname
} s; // OK: var-Namespace verschieden. In C++ ist dies nur
// möglich , wenn s keinen Konstruktor hat.
union s { // UNGÜLTIG: doppelter Tag-Bereich
int s; // OK: neuer Elementbereich
float f;
} f; // OK: var-Namespace
struct t {
int s; // OK: verschiedener Elementbereich
.
.
.
} s; // UNGÜLTIG: doppelter var-Name