假设我在头文件中定义了以下内容:
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::
.
归档时间: |
|
查看次数: |
89 次 |
最近记录: |