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 个 arg,另一个需要 2 个。该文件使用 1 个 arg 调用它。

4

1 回答 1

3

那是因为另一个函数有第二个参数作为默认参数看到这里我模拟了同样的效果。不幸的是,编译器没有在错误消息中显示默认参数:

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

当您尝试调用第一个版本时会产生歧义,因为第二个版本也是一个同样出色的候选者。

于 2011-06-21T05:15:05.133 回答