某次,在大型的工程代碼中,我這樣調用:
#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 ,錯誤很顯而易見了。實際中也確實經常會犯這種錯誤。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接
新聞熱點
疑難解答
圖片精選