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);
}
};
}
スコープが異なるため、オーバーロードすることはできません。1つ目bar
はにfoo::bar
あり、2つ目はにあり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
}
};
}
編集:それは明らかに過負荷になることはありません。