Domanda

Nel codice seguente, g ++ dà questo errore: 1.cpp: In funzione membro void W::test()': 1.cpp:6: error:int F :: glob' è privata 1.cpp: 19: errore: in questo contesto

Ma, non dovrebbe la dichiarata a livello globale variabile 'glob' essere usato qui, invece del "glob" "privato"?

   #include <iostream.h>

    int glob;
    class F
    {
        int glob;
        public:
        void readIt()
        {
            cin >> glob;
        }
    };

    class W : public F
    {
        public:
            void test()
            {
                glob--;
            }
    };

    int main()
    {
    }
È stato utile?

Soluzione

Le variabili e le funzioni sono accessibili utilizzando le regole di scoping, non regole visbility. Poiché F::glob è il glob nell'area di W::test(), esso viene utilizzato. Tuttavia, W::test() non ha accesso a F::glob, e un errore. Il compilatore non verificare la presenza di ::glob perché qualcos'altro precede in ambito "priorità" (non sono sicuro per il termine esatto).

Altri suggerimenti

glob privato ombre il glob globale, quindi l'errore è corretto utilizzare :: glob di accedere alla variabile globale se u intenzione di usare variabile globale

Si può provare a utilizzare ::glob--; invece. In questo modo si indica al compilatore di utilizzare lo spazio dei nomi globale.

membro della classe verrà utilizzato qui, per accedere all'uso variabile operatore globale ::.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top