[英]C++ variable overloading ambiguity
對於以下代碼行:
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))
都強制轉換為無濟於事。 有什么想法嗎?
是什么讓您認為鑄造inc
或ceil
會有所幫助? 編譯器告訴您無法確定要使用log10(float)
還是log10(double)
。 您需要向編譯器說明
double inc = (14.0) - double(ceil(log10((float)i)));
要么
double inc = (14.0) - double(ceil(log10((double)i)));
Overloading ambiguity between "`std::log10(double)`" and "`std::log10(float)`"
^^^^^^ ^^^^^
正如@ John3136所評論的那樣,該錯誤是指log10
函數的輸入。 在這種情況下,這是i
變量,它是一個int
類型。 由於int
既不是float
也不是double
float
,並且兩種轉換都同樣可行,因此編譯器不知道選擇哪種方式。 因此,您必須明確選擇一個。 例如:
std::log10(static_cast<float>(i));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.