我无法理解名称空间.A.cpp:
#include <iostream>
namespace A { int pause = 8; }
int main() {
std::cout << A::pause << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它打印出来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;
}
Run Code Online (Sandbox Code Playgroud)
现在,我得到了编译错误:
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
Run Code Online (Sandbox Code Playgroud)
有人可以解释出了什么问题吗?我认为using namespace A允许我省略A::,类似于如何using namespace std允许你省略std::.我尝试移动该行,main()但我收到相同的错误消息.注意,我故意选择变量名称,pause因为它显然与pause()声明的in 冲突iostream.任何反馈都表示赞赏.谢谢!
编译器告诉你问题是什么.它有两种可能的解决途径pause- 一种是通过A::pause,另一种是通过一个在任何命名空间之外pause()定义<unistd.h>并存在的函数.编译器无法决定使用哪个,因此您必须提供帮助.
如果您在A命名空间内为变量选择了一个不太通用的名称,例如pause_val,您可以在没有命名空间作用域的情况下输出它
#include <iostream>
namespace A { int pause_val = 8; }
using namespace A;
int main() {
std::cout << pause_val << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |