请帮我使用C ++ Namespace

时间:2014-08-15 12:53:09

标签: c++ namespaces

#include <iostream>
#include <cstdlib>

namespace A {
    int a = 10;
    void get_value(){ std::cout << "a = " << a << std::endl; }
}

namespace B {
    int b;
    void get_value(){ std::cout << "b =" << b << std::endl; }
}

void set_B();

int main(){

    using namespace A; 
    get_value(); 
    set_B();

    system("PAUSE");
    return 0;
}

void  set_B(){
    using namespace B;
    b = 15;
    get_value();    // Why call to get_value() is ambiguous, error is not generated here ?
 }

为什么在get_value()函数内调用set_B()不明确(A::get_value()B::get_value()),因为::get_value()内的set_B()内显示为{{1}}。

2 个答案:

答案 0 :(得分:3)

using namespace A;set_B内无效,因为它只显示在main内。它仅限于它出现的范围:main的主体。

答案 1 :(得分:0)

因为A::get_valueB::get_value通常在全局范围内不可见。 using namespace语句使该命名空间中的声明在set_B内可见。