我无法理解命名空间。A.cpp:
#include <iostream>
namespace A { int pause = 8; }
int main() {
std::cout << A::pause << std::endl;
return 0;
}
它打印出来8
。但是,现在我添加using namespace A
并更改A::pause
为 just pause
。A.cpp:
#include <iostream>
namespace A { int pause = 8; }
using namespace A;
int main() {
std::cout << pause << std::endl;
return 0;
}
现在,我得到编译错误:
A.cpp: In function ‘int main()’:
A.cpp:5: error: reference to ‘pause’ is ambiguous
/usr/include/unistd.h:507: error: candidates are: int pause()
A.cpp:2: error: int A::pause
A.cpp:5: error: reference to ‘pause’ is ambiguous
/usr/include/unistd.h:507: error: candidates are: int pause()
A.cpp:2: error: int A::pause
有人可以解释出了什么问题吗?我想using namespace A
可以让我省略A::
,类似于如何using namespace std
让你省略std::
。我尝试将线路移入,main()
但收到相同的错误消息。请注意,我特意选择了变量名pause
,因为它显然与 in 中pause()
声明的冲突iostream
。任何反馈表示赞赏。谢谢!