Pregunta

En el siguiente código, g ++ da este error: 1.cpp: En función miembro void W::test()': 1.cpp:6: error:int F :: Glob' es privada 1.cpp: 19: error: dentro de este contexto

Sin embargo, no debe el nivel global declarada variable 'Glob' se utiliza aquí, en lugar de la "pegote "privado""?

   #include <iostream.h>

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

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

    int main()
    {
    }
¿Fue útil?

Solución

Variables y funciones se accede mediante reglas de alcance, no reglas visbility. Debido F::glob es la glob en el ámbito de W::test(), que se utiliza. Sin embargo, W::test() no tiene acceso a F::glob, y se producirá un error. El compilador hace no comprobar si hay alguna otra cosa ::glob porque precede en el alcance de "prioridad" (no estoy seguro para el término exacto).

Otros consejos

pegote privada sombras del glob global, por lo que el error es correcto utilizar :: pegote acceder a la variable global u si la intención de utilizar la variable global

Puede intentar usar ::glob--; lugar. De este modo se indica al compilador a utilizar el espacio de nombres global.

miembro de la Clase será utilizado aquí, acceder a la variable de uso :: operador global.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top