我一直在编写一对重载的C ++函数,一个采用2个整数参数,另外两个浮点数。
但是代码块编译器说:
error: call of overloaded 'func(double, double)' is ambiguous
为什么double
如果我指定的是float
?
我正在使用这两个函数对它们的值求和并在其中的cout
上显示结果。作为参数给出的浮点值是1.14和3.33,而不是大浮点数......
有人知道吗? THX!
#include <iostream>
using namespace std;
void func(int a, int b) {
cout << a+b;
}
void func(float a, float b)
cout << a+b;
}
int main() {
func(3, 7);
func(1.14, 3.33);
}
答案 0 :(得分:3)
函数调用func(1.14, 3.33)
不明确。
因为此处1.14
和3.33
两个都可以翻倍,并且两者都可以转换为int
和float
,因此编译器不知道要调用哪个函数。
您可以通过明确告诉编译器常量类型func(float(1.14), float(3.33))
或将重新定义func(float, float)
更改为func(double, double)
来解决此问题。
在这种情况下,明确告诉编译器使用哪种类型可能是一个更好的主意。