簡體   English   中英

C ++變量重載歧義

[英]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)"

我也嘗試過將incceil(log10(i))都強制轉換為無濟於事。 有什么想法嗎?

是什么讓您認為鑄造incceil會有所幫助? 編譯器告訴您無法確定要使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM