#include <iostream>
using namespace std;
namespace extra
{ int i; }//Declared an integer i here
void i()
{
using namespace extra;
int i; //We called namespace extra at above then we declared another i
i=9;
cout<<i;
}
int main()
{
enum letter{i,j};
class i{letter j;};
::i();
return 0;
}
正如我在上面的评论中解释的那样,我们首先在命名空间中声明一个整数i然后在调用它之后我们声明另一个整数然后给它一个值9.我的问题是为什么这不会导致重新整理错误?也在代码行
i=9;
我的值得到值9?命名空间内的一个或void i()函数内的一个?
注意:请原谅我的英语不好。
答案 0 :(得分:1)
这是当地的。根据经验,它始终是使用的“最接近”定义。
struct A {};
int A = 0;
A b; // not ok, because A is the variable.
没有错误,因为没有名称i
表示全局范围或函数中的变量。
using指令只告诉编译器,如果它在当前上下文中找不到合适的名称,它也应该查看该命名空间。在您的情况下,编译器不需要进入extra
来查找i
,因为它已经在函数i
中找到了一个。{/ p>