Raj*_*esh 1 c++ oop namespaces function
myCout()当我在同一个函数中使用两个不同的命名空间时,为什么我得到错误消息(错误:重载的调用是不明确的)使用using namespace没有完全限定名称空间的指令?
#include <iostream>
using namespace std;
namespace first
{
void myCout(void)
{
cout<<"Hello World is great\n";
}
}
namespace second
{
void myCout(void)
{
cout<<"Hello Sky is high\n";
}
}
int main(void)
{
cout<<"Hello World\n";
using namespace first;
myCout();
using namespace second;
myCout();
return(0);
}
Run Code Online (Sandbox Code Playgroud)
如果我myCout()在下面给出的第二个命名空间中使用完全限定的命名空间,则没有问题
int main(void)
{
cout<<"Hello World\n";
using namespace first;
myCout();
second::myCout();
return(0);
}
Run Code Online (Sandbox Code Playgroud)
using指令尊重范围.因此,您可以引入一个新的块作用域来限制每个符号引入的符号的可用性:
int main(void)
{
cout<<"Hello World\n";
{
using namespace first;
myCout();
}
{
using namespace second;
myCout();
}
return(0);
}
Run Code Online (Sandbox Code Playgroud)
通常,为避免冲突和深度嵌套,请尝试使用using声明来提取所需的标识符.例如,如果你只想从那时开始使用类foo,first那么下面就不会有歧义:
using first::foo;
using namespace second;
Run Code Online (Sandbox Code Playgroud)