2008-12-30 2 views
3

В следующем коде g ++ дает следующую ошибку: 1.cpp: В функции-члене void W::test()': 1.cpp:6: error: int F :: glob 'является приватным 1.cpp: 19: error : в этом контекстеПеременная C++ с тем же именем, контекст: глобальный и закрытый,

Но, не следует ли использовать глобальный глобальный объявленный здесь переменный '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() 
    { 
    } 

ответ

10

переменные и функции доступны с помощью правила видимости, а не правила visbility. Потому что F::glob является glob в пределах W::test(), он используется. Однако W::test() не имеет доступа к F::glob и ошибках сообщения. Компилятор делает не для ::glob, потому что что-то еще превзойдет его в области «приоритет» (не уверен в точном выражении).

4

Вместо этого вы можете использовать ::glob--;. Таким образом вы сообщаете компилятору использовать глобальное пространство имен.

2

Элемент класса будет использоваться здесь для доступа к глобальному использованию переменных :: operator.

5

частные Глоб тени глобального Glob, поэтому ошибка правильно использование :: Glob для доступа к глобальной переменной, если и намерения использовать глобальную переменную

Смежные вопросы