3
c:\wxwidgets-2.8.11\include\wx\filename.h(497): error C2668: 'wxGetTranslation' : ambiguous call to overloaded function
          c:\bitcoin\src\util.h(191): could be 'const char *wxGetTranslation(const char *)'
          c:\wxwidgets-2.8.11\include\wx\intl.h(579): or       'const wxChar *wxGetTranslation(const wxChar *,const wxChar *)'
          while trying to match the argument list '(const char [14])'
wxString GetHumanReadableSize(
    const wxString &nullsize = wxGetTranslation(wxT("Not available")),
    int precision = 1) const;

それがどのように曖昧なのか全くわかりませんか?1つは1つの引数を取り、もう1つは2つを取ります。そのファイルは1つの引数でそれを呼び出しています。

4

1 に答える 1

3

これは、他の関数がデフォルトの引数として2番目のパラメーターを持っているためです。ここを参照してください。同じ効果をシミュレートしました。残念ながら、コンパイラはエラーメッセージ内にデフォルトの引数を表示しません。

//intl.h
const wxChar *wxGetTranslation(const wxChar *c1, const wxChar *c2 = <something>);

より正確に、

void foo (const char* c1);  // 1st
void foo (const char* c1, const char *c2 = 0);  // 2nd

2番目のバージョンも同様に候補であるため、1番目のバージョンを呼び出そうとするとあいまいさが生じます。

于 2011-06-21T05:15:05.133 に答える