2011-10-24 27 views

答えて

5

異なるスコープであるため、オーバーロードすることはできません。第1のbarfoo::barであり、第2のものはfoo::baz::barである。

外部の名前空間の名前barは、新しい宣言によって隠されています。明示的に呼び出されるか、宣言を使用して可視にする必要があります。

static void bar() 
{ 
    using foo::bar; 
    bar(5); 
} 
+0

コンパイル時に検索を続行する必要があることをコンパイラに伝えることはできませんでしたか?何か他のことを試みることなく失敗するのはなぜですか? – Mehrdad

+0

@Mehrdad:編集を参照してください。 –

+0

ああ、名前は隠されている...面白い、ありがとう。 +1 – Mehrdad

0

これはあなたがやろうとしていることですか?

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 
     } 
    }; 
} 

EDIT:これも明らかにオーバーロードされません。

関連する問題