C++與namespace有關的兩個編譯錯誤的講解
更新時間:2019年04月08日 15:48:40 作者:stpeace
今天小編就為大家分享一篇關于C++與namespace有關的兩個編譯錯誤的講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
某次,在大型的工程代碼中,我這樣調用:
#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++ Boost MetaStateMachine定義狀態(tài)機超詳細講解
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱2022-12-12

