variável C ++ com o mesmo nome, context: global e privada,
Pergunta
No código a seguir, g ++ dá esse erro:
1.cpp: Em função membro void W::test()':
1.cpp:6: error:
int F :: glob' é privado
1.cpp: 19: erro: neste contexto
Mas, se não a nível mundial declarou 'Glob' variável ser usado aqui, em vez do "glob "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()
{
}
Solução
As variáveis ??e funções são acessadas usando regras de escopo, não regras visbility. Porque é o F::glob
glob
no âmbito de W::test()
, ele é usado. No entanto, W::test()
não tem acesso a F::glob
, e ocorrerá um erro. O compilador faz não Verificar ::glob
porque algo a precede no escopo "prioridade" (não tenho certeza para o termo exato).
Outras dicas
glob privada sombras do glob global, de modo que o erro está correta uso :: glob para acesso a variável global se u intenção de usar variável global
Você pode tentar usar ::glob--;
vez. Desta forma, você dizer ao compilador para usar o namespace global.
membro da classe será usado aqui, para acesso uso variável global :: operador.