如何正确使用“using namespace foo?”

问题描述:

我对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不是一个完全相同的问题 –

的一个作为错误信息告诉你here这些功能都没有你的当前范围内声明。
您调用一个未指定的名称空间的所有内容都被认为是在全局名称空间中找到的,如::print,::printB

您需要使用的命名空间范围运算符(::)喜欢如下:

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

using声明:

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

使用命名空间将允许您同时具有名为print的函数。你会使用他们作为A::print()B::print()而不必重新命名他们printB()