【发布时间】:2018-04-14 21:26:33
【问题描述】:
我一直在编写一对重载的 C++ 函数,一个接受 2 个整数参数,另一个接受 2 个浮点数。
但是代码块编译器说:
error: call of overloaded 'func(double, double)' is ambiguous
如果我指定float,为什么要double?
我正在使用这两个函数来求和它们的值并在它们内部的cout 上显示结果。作为参数给出的浮点值是 1.14 和 3.33,不是很大的浮点数...
有人知道吗?谢谢!
#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);
}
【问题讨论】:
-
你的代码在哪里?
-
因为 C++ 指定浮点值被提升为双精度值。
-
那么浮动值提升为双倍有什么想法?
-
double不是float。使用double参数调用任一函数都需要转换,并且两次转换具有相同的等级,因此调用不明确。
标签: c++ compiler-errors floating-point overloading