繁体   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