解決「sqrt」 對過載函式的呼叫不明確

2021-07-11 23:32:06 字數 819 閱讀 2931

也是自己平時總結出來,希望可以對小白有幫助。高手勿噴。

假如原先是這樣的:if (sqrt((x0-tx)*(x0-tx)+(y0-ty)*(y0-ty))        d:\vs2010\vc\include\math.h(581): 可能是「long double sqrt(long double)」

1>        d:\vs2010\vc\include\math.h(533): 或       「float sqrt(float)」

1>        d:\vs2010\vc\include\math.h(128): 或       「double sqrt(double)」

1>        試圖匹配引數列表「(int)」時

原因是程式從vc6.0轉到vs.net更高版本上執行,因為vs.net要求的更精確而造成了報錯

修改:在math.h中"sqrt"有三種型別 :long double sqrt(long double ),float sqrt(float),

double sqrt(double),所以任選一種對你的應用精度較好的引數和返回值型別,如float sqrt(float),將上述

if (sqrt((x0-tx)*(x0-tx)+(y0-ty)*(y0-ty))

以上這段是網上別人寫的,但是我按照他這個還是不行。後來修改了地方,在引數上加上轉換

即int diagonal = floor(sqrt((double)img.rows*(double)img.rows + (double)

img.cols*(double)img.cols));(這是我執行的其中一部分的**)

就可以成功執行了。

對過載函式的呼叫不明確sqrt的解決方案

本人曾經找過關於對過載函式的呼叫不明確sqrt的解決方案,但遺憾的是,在不收費的前提下沒有找到具體的解決辦法,所以在本人僥倖解決後,在這裡將一種解決辦法分享給大家 本人剛接觸c 問題理解難免有疏忽,還望各位指正 這是為了找出100 200間的全部素數 而寫的 該 出自 譚浩強所編寫的 c 程式設計 ...

C 所遇 「pow」 對過載函式的呼叫不明確

error c2668 pow 對過載函式的呼叫不明確 vs2010中,數學函式的引數檢查更為嚴格,如pow 2,45 會引起乙個錯誤提示如下 error c2668 pow 對過載函式的呼叫不明確 d program filesmicrosoft visual studio 8vcincludem...

ioctl呼叫不執行問題的解決

在驅動開發中,ioctl是很常用的應用層與核心通訊的介面,今天除錯過程中遇到乙個ioctl呼叫不執行的問題,有點意思,寫篇部落格記錄一下。對於網路裝置,核心通過巨集siocdevprivate給各個裝置預留了一組私有ioctl命令,驅動可以自行定義響應函式來執行相應的操作。今天接到乙個需求,要在驅動...