gpt4 book ai didi

c++ - 在同一个函数中使用不同的命名空间

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:59 25 4
gpt4 key购买 nike

为什么我在使用 using namespace 指令时在同一函数中使用两个不同的命名空间时收到错误消息(错误:重载 myCout() 的调用不明确)完全限定的 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);
}

如果我在下面给出的第二个命名空间中为 myCout() 使用完全限定的命名空间,则没有问题

int main(void)
{
cout<<"Hello World\n";
using namespace first;
myCout();
second::myCout();
return(0);
}

最佳答案

using 指令尊重范围。所以你可以引入一个新的 block 范围来限制每个引入的符号的可用性:

int main(void)
{
cout<<"Hello World\n";
{
using namespace first;
myCout();
}

{
using namespace second;
myCout();
}

return(0);
}

通常,为了避免冲突和深层嵌套,请尝试使用 using 声明只引入您需要的标识符。例如,如果您只想使用 first 中的 foo 类,那么以下内容不会有歧义:

using first::foo;
using namespace second;

关于c++ - 在同一个函数中使用不同的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45607738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com