我如何正确使用"使用命名空间foo?"

时间:2017-10-13 19:59:22

标签: c++ namespaces

我对c ++中的using namespace x感到有些困惑。为什么在这种情况下会不正确?是"使用命名空间"仅适用于我们#including的其他文件?

#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(); 
}

2 个答案:

答案 0 :(得分:2)

由于错误消息告诉您here这些功能未在您当前范围内声明。
您使用未指定的命名空间调用的所有内容都被视为在全局命名空间中找到::print::printB

您需要使用名称空间范围运算符(::),如下所示:

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

using声明:

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

答案 1 :(得分:1)

使用命名空间可以让你拥有两个名为print的函数。您可以将它们用作A::print()B::print(),而不必重命名其中一个printB()