#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}}。
答案 0 :(得分:3)
using namespace A;
在set_B
内无效,因为它只显示在main
内。它仅限于它出现的范围:main
的主体。
答案 1 :(得分:0)
因为A::get_value
和B::get_value
通常在全局范围内不可见。 using namespace
语句使该命名空间中的声明在set_B
内可见。