bar()
这里函数不能重载的原因是什么?
namespace foo
{
void bar(int) { }
struct baz
{
static void bar()
{
// error C2660: 'foo::baz::bar' : function does not take 1 arguments
bar(5);
}
};
}
bar()
这里函数不能重载的原因是什么?
namespace foo
{
void bar(int) { }
struct baz
{
static void bar()
{
// error C2660: 'foo::baz::bar' : function does not take 1 arguments
bar(5);
}
};
}
它不能被重载,因为它们在不同的范围内。第一个bar
是 atfoo::bar
而第二个是 at foo::baz::bar
。
来自外部命名空间的名称bar
被新声明隐藏。它必须要么显式调用,要么通过 using 声明使其可见:
static void bar()
{
using foo::bar;
bar(5);
}
这是你想要做的吗?
namespace foo
{
void bar(int) { }
struct baz
{
static void bar()
{
// error C2660: 'foo::baz::bar' : function does not take 1 arguments
foo::bar(5); // <-- changed
}
};
}
编辑:这显然也不会超载。