la variable C ++ con el mismo nombre, el contexto: global y privada,
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()
{
}
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.