Question

Dans le code suivant, g ++ donne cette erreur: 1.cpp: En fonction membre void W::test()': 1.cpp:6: error:int F :: glob » est privé 1.cpp: 19: erreur: dans ce contexte

Mais, ne devrait pas le déclarer globalement variable « glob » employée ici, au lieu du "privé" "glob"?

   #include <iostream.h>

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

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

    int main()
    {
    }
Était-ce utile?

La solution

Les variables et les fonctions sont accessibles en utilisant les règles de cadrage, pas de règles visbility. Parce que F::glob est le glob dans le cadre de W::test(), il est utilisé. Cependant, W::test() n'a pas accès à F::glob, et une erreur se produit. Le compilateur ne pas vérifier ::glob parce que quelque chose d'autre dans précède la portée « priorité » (pas sûr pour le terme exact).

Autres conseils

ombres glob privé le glob global, de sorte que l'erreur est correcte utiliser :: glob pour accéder à la variable globale si u l'intention d'utiliser la variable globale

Vous pouvez essayer d'utiliser à la place ::glob--;. De cette façon, vous dites au compilateur d'utiliser l'espace de noms global.

membre de classe sera utilisé ici, pour accéder à une utilisation variable globale :: opérateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top