Frage

Im folgenden Code, g ++ gibt diese Fehlermeldung: 1.cpp: In Memberfunktion void W::test()': 1.cpp:6: error:int F :: Glob‘ist privat 1.cpp: 19: Fehler: in diesem Kontext

Aber sollte nicht die global deklariert Variable ‚Glob‘ hier verwendet werden, statt der "privaten" "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()
    {
    }
War es hilfreich?

Lösung

Variablen und Funktionen werden über Scoping-Regeln zugegriffen wird, nicht visbility Regeln. Da F::glob die glob im Rahmen W::test() ist, wird es verwendet. Allerdings hat W::test() keinen Zugriff auf F::glob, und ein Fehler gemeldet. Der Compiler tut nicht für ::glob überprüfen, weil etwas anderes es in scope "Priorität" vorausgeht (nicht sicher, für die genaue Bezeichnung).

Andere Tipps

Private glob Schatten der globalen glob, so dass der Fehler korrekt Verwenden :: Glob die globale Variable zugreifen, wenn u Absicht globalen Variable zu verwenden,

Sie können versuchen, stattdessen mit ::glob--;. So können Sie den Compiler sagen dem globalen Namensraum zu verwenden.

Klasse Mitglied wird hier verwendet werden, globalen Variable Verwendung :: operator zugreifen zu können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top