命名空间对我没有意义

twe*_*ypi 1 c++ namespaces

假设我在头文件中定义了以下内容:

namespace MyNamespace
{
   Class global_c;
}
Run Code Online (Sandbox Code Playgroud)

然后我在源文件中执行此操作:

namespace MyNamespace
{
   void MyClass::Function( )
   {
       ::global_c.DoSomething( );
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我只做global_c.DoSomething(); global_c结果是编译器未定义的.但如果我添加'using namespace MyNamespace;'它编译得很好 到文件的顶部它也可以正常工作.

由于global_c与"MyClass"位于同一个命名空间中,为什么不能仅仅因为"::"被添加到它的前面来解决它?

Ed *_* S. 10

因为您通过在变量前加上明确告诉编译器使用全局命名空间::.由于global_c在全局命名空间中不存在,因此会引发错误.

编译器正在做你告诉它要做的事情.想想::作为Global::.