Предположим, в заголовочном файле определено следующее:
namespace MyNamespace
{
Class global_c;
}
Затем я делаю это в исходном файле:
namespace MyNamespace
{
void MyClass::Function( )
{
::global_c.DoSomething( );
}
}
global_c оказывается неопределенным компилятором, если я просто сделаю global_c.DoSomething (); однако, это прекрасно скомпилируется, если я добавлю 'использование пространства имен MyNamespace;' к началу файла это также отлично работает.
Поскольку global_c находится в том же пространстве имен, что и MyClass, почему его нельзя разрешить только потому, что перед ним стоит `:: '?