2011-06-21 13 views
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つの引数をとります。「wxGetTranslation」を呼び出すと、コンパイラエラー「あいまいな関数呼び出し」が発生するのはなぜですか?

答えて

3

これは、の他の関数の2番目のパラメータがデフォルトの引数であるからです。 See here私は同じ効果をシミュレートしました。残念ながら、コンパイラはエラーメッセージ内のデフォルトの引数は表示されません。あなたが最初のバージョンを呼び出すようにしようとすると、第二版も均等であるため、

//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 

は、あいまいさを作成しますうん。

関連する問題