문제

다음 코드에서 G ++는 다음 오류를 제공합니다. 1.CPP : 멤버 기능 void W::test()': 1.cpp:6: error:int f :: glob '는 개인입니다 1.cpp : 19 : 오류 :이 맥락에서

그러나 "개인" "글로벌"대신 전 세계적으로 선언 된 변수 '글로벌'이 여기에 사용되어서는 안됩니까?

   #include <iostream.h>

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

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

    int main()
    {
    }
도움이 되었습니까?

해결책

변수 및 함수는 사적 규칙이 아닌 범위 규칙을 사용하여 액세스합니다. 왜냐하면 F::glob 입니다 glob 의 범위에서 W::test(), 그것은 사용됩니다. 하지만, W::test() 액세스 할 수 없습니다 F::glob, 및 오류 결과. 컴파일러가합니다 ~ 아니다 확인하십시오 ::glob 다른 것이 범위 "우선 순위"로 선행되기 때문입니다 (정확한 용어는 확실하지 않음).

다른 팁

Private Glob은 Global Glob을 섀도우로 표시하므로 오류는 올바른 사용입니다.

사용해 볼 수 있습니다 ::glob--; 대신에. 이렇게하면 컴파일러에 글로벌 네임 스페이스를 사용하도록 지시합니다.

클래스 멤버는 여기에서 사용되어 전역 변수 사용 :: 운영자에 액세스합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top