一个以上的重载函数与参数列表匹配

12

当我使用该代码时,我遇到了上述错误。

double x = log10(100);

我已经在同一项目的其他类中使用它,但没有显示此错误。

我该如何修复它?

非常感谢

Chintan


3
我假设你的实际实现会采用一个变量而不是100,如果不是的话:x = 2... - user1486147
1
检查你使用的库或继承的类。看起来你在调用函数时出现了冲突。如果可能的话,使用类名来调用log10()函数。这可能会解决问题。 - Narendra
1个回答

22

这个错误通常表示函数log10有多个重载,对于该特定调用没有一个比其他重载更好的。例如,这些重载可能接受floatdouble:100是一个可以转换为任何一种类型的int,并且这些类型之间的转换是等价的,因此编译器无法确定最佳选项。

您可以强制显式地将转换应用于其中的一个重载:

double x = log10( 100. );    // 100. is a double
float  y = log10( 100f );    // 100f is a float
int i = 100;
double z = log10( static_cast<double>(i) ); // or cast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接