ambiguous call to overloaded function錯(cuò)誤分析及解決方法
工作中碰到這樣一個(gè)問題,
程序報(bào)錯(cuò):
Error 3 error C2668: 'wvsprintfW' : ambiguous call to overloaded function
這個(gè)錯(cuò)誤的意思是:wvsprintfW有重載函數(shù),根據(jù)目前的參數(shù)編譯器無法確定調(diào)用哪個(gè)。
wvsprintfW屬于系統(tǒng)函數(shù),自己也沒有重載過,理應(yīng)不該有這樣的問題,
可能是包含的頭文件太多,有的文件對(duì)此函數(shù)重載過。
網(wǎng)上有人舉例說:
int fun(int,int);
float fun(int,int); //編譯器就會(huì)出現(xiàn)錯(cuò)誤 不知道到底調(diào)用哪個(gè)函數(shù)
這里的錯(cuò)誤可能不是上述類型的,但這個(gè)例子可以幫助理解。
最終解決方法是:在調(diào)用的wvsprintfW前加” :: “符號(hào),指明采用全局函數(shù),這樣編譯器就不需做選擇了。
法2
函數(shù)調(diào)用有二義行。
在參數(shù)前加類型轉(zhuǎn)換
程序報(bào)錯(cuò):
Error 3 error C2668: 'wvsprintfW' : ambiguous call to overloaded function
這個(gè)錯(cuò)誤的意思是:wvsprintfW有重載函數(shù),根據(jù)目前的參數(shù)編譯器無法確定調(diào)用哪個(gè)。
wvsprintfW屬于系統(tǒng)函數(shù),自己也沒有重載過,理應(yīng)不該有這樣的問題,
可能是包含的頭文件太多,有的文件對(duì)此函數(shù)重載過。
網(wǎng)上有人舉例說:
int fun(int,int);
float fun(int,int); //編譯器就會(huì)出現(xiàn)錯(cuò)誤 不知道到底調(diào)用哪個(gè)函數(shù)
這里的錯(cuò)誤可能不是上述類型的,但這個(gè)例子可以幫助理解。
最終解決方法是:在調(diào)用的wvsprintfW前加” :: “符號(hào),指明采用全局函數(shù),這樣編譯器就不需做選擇了。
法2
函數(shù)調(diào)用有二義行。
在參數(shù)前加類型轉(zhuǎn)換
posted on 2010-02-24 14:42 wrh 閱讀(3203) 評(píng)論(0) 編輯 收藏 引用