工作中碰到這樣一個問題,
程序報錯:
Error 3 error C2668: 'wvsprintfW' : ambiguous call to overloaded function
這個錯誤的意思是:wvsprintfW有重載函數(shù),根據(jù)目前的參數(shù)編譯器無法確定調用哪個。
wvsprintfW屬于系統(tǒng)函數(shù),自己也沒有重載過,理應不該有這樣的問題,
可能是包含的頭文件太多,有的文件對此函數(shù)重載過。
網(wǎng)上有人舉例說:
int fun(int,int);
float fun(int,int); //編譯器就會出現(xiàn)錯誤 不知道到底調用哪個函數(shù)
這里的錯誤可能不是上述類型的,但這個例子可以幫助理解。
最終解決方法是:在調用的wvsprintfW前加” :: “符號,指明采用全局函數(shù),這樣編譯器就不需做選擇了。
法2
函數(shù)調用有二義行。
在參數(shù)前加類型轉換