函数重载二义性:error C2668: 'pow' : ambiguous call to overloaded function
2013-07-08 14:42:45
當使用的函數時重載函數時,若編譯器不能判斷出是哪個函數,就會出現二義性,并給出報錯信息。
問題描述:
在.cpp代碼中用到pow函數,如下:
long int MaxInteger = pow( 2,8*sizeof(long int) -1 );
編譯,報錯為:
error C2668: 'pow' : ambiguous call to overloaded function
error C2668: 'pow' : ambiguous call to overloaded function
1>????????? d:\program files\microsoft visual studio 10.0\vc\include\math.h(583): could be 'long double pow(long double,int)'
1>????????? d:\program files\microsoft visual studio 10.0\vc\include\math.h(581): or?????? 'long double pow(long double,long double)'
1>????????? d:\program files\microsoft visual studio 10.0\vc\include\math.h(535): or?????? 'float pow(float,int)'
1>????????? d:\program files\microsoft visual studio 10.0\vc\include\math.h(533): or?????? 'float pow(float,float)'
1>????????? d:\program files\microsoft visual studio 10.0\vc\include\math.h(497): or?????? 'double pow(double,int)'
1>????????? d:\program files\microsoft visual studio 10.0\vc\include\math.h(122): or?????? 'double pow(double,double)'
根據給出的信息,可知pow函數有6種重載函數,編譯器根據給定的參數不能判斷代碼中使用的是哪個函數,因此報錯。
解決辦法:
可通過指定參數的類型解決,如下:
MaxInteger = (long int) pow( (float)2,(int)( 8*sizeof(long int) - 1 ) )
這樣,編譯器就直達是要用'long double pow(long double,int)'這個函數了。
轉載于:https://www.cnblogs.com/youngforever/p/3177921.html
總結
以上是生活随笔為你收集整理的函数重载二义性:error C2668: 'pow' : ambiguous call to overloaded function的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几种开源软件授权协议
- 下一篇: Python获取命令行参数