동일한 이름의 C ++ 변수, 컨텍스트 : 글로벌 및 개인,
문제
다음 코드에서 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--;
대신에. 이렇게하면 컴파일러에 글로벌 네임 스페이스를 사용하도록 지시합니다.
클래스 멤버는 여기에서 사용되어 전역 변수 사용 :: 운영자에 액세스합니다.
제휴하지 않습니다 StackOverflow