gpt4 book ai didi

c++ - 在 C++ 中使用声明

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:05 25 4
gpt4 key购买 nike

namespace A {
void F() {}
namespace B {
void F(int) {}
}
}

using A::B::F;

namespace A {
void G() {
F(); // OK
F(1); // Error: too many arguments to function void A::F()
}
}

int main() { return 0; }

我有这段代码。

我定义了两个具有相同名称但不同签名的函数。

然后我使用 using 声明 using A::B::F

A::G() 中,编译器尝试在 A::B::F() 之前解析 A::F() >.

如果有这样的冲突,有什么命令吗?

最佳答案

首先搜索嵌套最深的作用域,找不到名称再向外搜索作用域。所以首先它会在 G 中找到 F 的 block 范围声明,如果有的话;然后它将在 A 的命名空间范围内找到一个声明,如果有的话;如果那也失败了,它将搜索全局范围。由于 using A::B::F; 出现在全局范围内,因此总是首先找到 A::F。也许您应该将 using 声明移到 A 中。

关于c++ - 在 C++ 中使用声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778845/

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