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()
    {
    }
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top