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

2021-10-18 16:39:12 字數 938 閱讀 5274

(本人曾經找過關於對過載函式的呼叫不明確sqrt的解決方案,但遺憾的是,在不收費的前提下沒有找到具體的解決辦法,所以在本人僥倖解決後,在這裡將一種解決辦法分享給大家~本人剛接觸c++,問題理解難免有疏忽,還望各位指正~)

這是為了找出100~200間的全部素數 而寫的**,該**出自

譚浩強所編寫的《c++程式設計(第三版)》p78,例題3.14.

但是該**有一處錯誤,會導致系統出現:

「error c2668: 「sqrt」: 對過載函式的呼叫不明確

1> d:\visual2010\vc\include\math.h(589): 可能是「long double sqrt(long double)」

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

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

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

1>

1>生成失敗。」

的提示,現在把**附下,並提供乙個解決方案:

#include

#include

#include

using

namespace std;

int main ()}

if(prime)

if(n%

10==0)

} cout

}

解決方法:

k=int (sqrt(m));

改為k=int (sqrt((double)m));

即可以解決問題。

(只是順手寫寫玩玩……勿噴……)

ps:教材中初次關於過載函式的說明,在p101.

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

也是自己平時總結出來,希望可以對小白有幫助。高手勿噴。假如原先是這樣的 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 incl...

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

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

c 反射過載方法(發現不明確的匹配)

getmethod string name 在反射過載方法時,如果呼叫此過載方法,會產生 發現不明確的匹配 的錯誤。解決方案如下 getmethod methodname new type 其中type陣列中的項的個數是由要呼叫的方法的引數個數來決定的。如果無引數,則new type 使type陣列...