为什么范围解析在这里不起作用?
函数bar()
这里不能重载的原因是什么?
namespace foo
{
void bar(int) { }
struct baz
{
static void bar()
{
// error C2660: 'foo::baz::bar' : function does not take 1 arguments
bar(5);
}
};
}
What is the reason why the function bar()
can't be overloaded here?
namespace foo
{
void bar(int) { }
struct baz
{
static void bar()
{
// error C2660: 'foo::baz::bar' : function does not take 1 arguments
bar(5);
}
};
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它不能重载,因为它们处于不同的范围。第一个
bar
位于foo::bar
,第二个bar
位于foo::baz::bar
。外部命名空间中的名称
bar
被新声明隐藏。它必须显式调用,或者通过 using 声明使其可见:It cannot be overloaded because they are at different scopes. The first
bar
is atfoo::bar
while the second one is atfoo::baz::bar
.The name
bar
from the outer namespace is hidden by the new declaration. It has to either be called explicitly, or made visible by a using declaration:这就是你想做的吗?
编辑:这显然也不会超载。
Is this what you're trying to do?
EDIT: That's also obviously not going to be overloading.