[英]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.