以下行的代碼:C++變量重載歧義
for (int i = 1; i <= var; i++) { double inc = (14.0) - double(ceil(log10(i)))};
我不斷收到錯誤
Overloading ambiguity between "std::log10(double)" and "std::log10(float)"
我也試着鑄造既inc
和ceil(log10(i))
浮上徒勞無功。思考?
以下行的代碼:C++變量重載歧義
for (int i = 1; i <= var; i++) { double inc = (14.0) - double(ceil(log10(i)))};
我不斷收到錯誤
Overloading ambiguity between "std::log10(double)" and "std::log10(float)"
我也試着鑄造既inc
和ceil(log10(i))
浮上徒勞無功。思考?
Overloading ambiguity between "`std::log10(double)`" and "`std::log10(float)`"
^^^^^^ ^^^^^
As @ John3136評論說錯誤是指輸入log10
函數。在這種情況下,這是i
變量,它是一個int
類型。因爲int
既不是float
也不是double
,並且兩種轉換同樣可行,所以編譯器不知道選擇哪個。因此,你必須明確地選擇一個。例如:
std::log10(static_cast<float>(i));
是什麼讓你覺得鑄造inc
或ceil
會有幫助?編譯器告訴你它不能確定你想要的是log10(float)
還是log10(double)
。你需要做的是明確的編譯器
double inc = (14.0) - double(ceil(log10((float)i)));
或
double inc = (14.0) - double(ceil(log10((double)i)));
謝謝,這幫助! –