Verdeckte Varibalen und Namensbereiche
-
Bin auf eine Merkwürdigkeit in meinem Buch gestoßen (C/C++ Kompendium S. 122):
Der Autor schreibt:
"Auf verdeckte Variablen, die innerhalb eines Namensbereiches deklariert sind, kann man über den Bezeichner des Namensbereiches zugreifen."Dazu gibt er folgendes Beispiel an:
namespace gipsy { int i; } ... int func(int i) { gipsy::i = 3; ...
Dieses Beispiel hat doch nichts mit der Verdeckung von Variablen zu tun - oder? Der Bezeichner i (aus dem Namesbereich gipsy) befindet sich halt einfach in einem anderem Gültigkeitsbereich wie der Bezeichner i (von der Funktion func) - habe ich da recht? - oder etwas falsch verstanden?
Eine Seite davor steht im Buch: "Deklarationen gleichlautender Variablen in eingeschlossenen Gültigkeitsbereichen verdecken Variablen aus umliegenden Gültigkeitsbereichen"
gleichlautende Variablen liegen vor - aber wir haben keinen "eingeschlossenen Gültigkeitsbereich" - oder?
-
Ein Namensbereich ist einfach nur ein seperater Bereich um Namenskonflikte zu vermeiden.
-
Das Beispiel passt nicht zu dem was "auf der Seite davor steht".
Das Verdecken geht so
//globaler bereich int x; int main() { int x;//verdeckt ::x return 0; }
Du liegst mit deinen Vermutungen schon richtig.