2015-09-15 58 views
0

以下行的代碼: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)"

我也試着鑄造既incceil(log10(i))浮上徒勞無功。思考?

+0

謝謝,這幫助! –

回答

1
Overloading ambiguity between "`std::log10(double)`" and "`std::log10(float)`" 
              ^^^^^^      ^^^^^ 

As @ John3136評論說錯誤是指輸入log10函數。在這種情況下,這是i變量,它是一個int類型。因爲int既不是float也不是double,並且兩種轉換同樣可行,所以編譯器不知道選擇哪個。因此,你必須明確地選擇一個。例如:

std::log10(static_cast<float>(i)); 
2

是什麼讓你覺得鑄造incceil會有幫助?編譯器告訴你它不能確定你想要的是log10(float)還是log10(double)。你需要做的是明確的編譯器

double inc = (14.0) - double(ceil(log10((float)i))); 

double inc = (14.0) - double(ceil(log10((double)i)));