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.


Anmelden zum Antworten