1
내가 헤더 파일에 정의 된 다음 있다고 가정네임 스페이스의 나에게 이해가되지 않는
namespace MyNamespace
{
Class global_c;
}
가 그럼 난 소스 파일에서이 작업을 수행 :
namespace MyNamespace
{
void MyClass::Function()
{
::global_c.DoSomething();
}
}
global_c은 정의되지 않은 밝혀 컴파일러에 의해, 만약 내가 global_c.DoSomething(); 그러나 그것은 네임 스페이스 MyNamespace를 사용하여 추가하면 잘 컴파일됩니다. 파일의 상단에도 잘 작동합니다.
global_c가 'MyClass'와 동일한 네임 스페이스에 있기 때문에 '::'이 앞에 추가 되었기 때문에 해결되지 않는 이유는 무엇입니까?
그게 무슨 일이 일어나면 어떻게 아직도 찾아 낼 수 있을까요? 그것은 네임 스페이스 MyNamespace가 아닌 전역 네임 스페이스에서 찾고 있기 때문에 계속 떨어지지 않아야합니까? – tweetypi
@meds : 무슨 소리 야? '::'을 앞에 붙이면 확실히 작동하지 않습니다. 만약 당신이 그것을 떠나면 현재 네임 스페이스 ('MyNamespace')를 사용합니다. –
S '::'을 앞에 붙이고 소스 파일에서 '네임 스페이스 MyNamespace를 사용합니다'라고 지정하면 컴파일러가 변수를 찾을 수 있습니다. 이는 전역 변수를 찾을 때 의미가 있습니다. 네임 스페이스는 전역 네임 스페이스가 아닌 'using'네임 스페이스도 확인합니다. – tweetypi