2017-10-13 79 views
1

我對C++中使用的命名空間x有些困惑。爲什麼在這方面它會不正確? 「使用名稱空間」僅適用於我們#include的其他文件嗎?如何正確使用「using namespace foo?」

#include <iostream> 
using namespace A; 


namespace A { 
    void print() { 

std::cout << "From namespace A" << std::endl; 
    } 
} 

namespace B { 
    void printB() { 
     std::cout << "From namespace B" << std::endl; 
    } 
} 


int main() { 
    print(); 
    printB(); 
} 
+1

相關/欺騙:https://stackoverflow.com/questions/ 1452721/why-is-using-namespace-std-considered-bad-practice – NathanOliver

+2

@NathanOliver不是一個完全相同的問題 –

回答

2

的一個作爲錯誤信息告訴你here這些功能都沒有你的當前範圍內聲明。
您調用一個未指定的名稱空間的所有內容都被認爲是在全局名稱空間中找到的,如::print,::printB

您需要使用的命名空間範圍運算符(::)喜歡如下:

A::print(); 
B::printB(); 

using聲明:

using A::print; 
using B::printB; 
1

使用命名空間將允許您同時具有名爲print的函數。你會使用他們作爲A::print()B::print()而不必重新命名他們printB()