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 2012-03-08 00:13:27
@meds:你是什么意思?如果你在'::'前面加上它肯定是行不通的。如果你不这样做,它会使用当前的namesapce('MyNamespace')。 – 2012-03-08 00:18:59
S我的意思是,如果你在源代码文件中加上'::'并在源文件中使用'namespace MyNamespace',编译器将能够找到变量,这是否意味着当它在全局中查找变量时命名空间它也检查'使用'命名空间,而不仅仅是全局命名空间? – tweetypi 2012-03-08 00:21:38