C++与namespace有关的两个编译错误的讲解

Qoqa ·
更新时间:2024-11-10
· 858 次阅读

某次,在大型的工程代码中,我这样调用:

#include <iostream> using namespace std; namespace A { void fun() { printf("aaa\n"); } } namespace B { void fun() { printf("bbb\n"); } } int main() { fun(); return 0; }

编译出错:error: ‘fun' was not declared in this scope,查了一下,原来是名空间在捣鬼。另外,名空间中的函数为什么不缩进呢?我想了一下,理解了当时写代码的人为什么要这样做。

再看我遇到的另外一次错误:

#include <iostream> using namespace std; namespace A { void fun() { printf("aaa\n"); } } namespace B { void fun() { printf("bbb\n"); } } using namespace A; using namespace B; int main() { fun(); return 0; }

结果:call of overloaded ‘fun()' is ambiguous ,错误很显而易见了。实际中也确实经常会犯这种错误。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对软件开发网的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文章:C++begin和end运算符的返回迭代器的类型如何判断?C++中箭头运算符的含义与用法讲解C++堆和栈的区别与联系讲解C++直接cout指针名的含义?C++基类指针和派生类指针之间的转换方法讲解strings命令分析浅谈Go和C++编译时的一点小区别c++编写String类代码实例C++类中变量也可以是引用的代码实例C++中rapidjson组装继续简化的方法C++ Primer中&、*符号的多重定义与int *p和int* p的区别讲解



c+ 编译错误 C++ namespace

需要 登录 后方可回复, 如果你还没有账号请 注册新账号