重载的C ++函数浮点参数错误

时间:2018-04-14 21:26:33

标签: c++ compiler-errors floating-point overloading

我一直在编写一对重载的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);

}

1 个答案:

答案 0 :(得分:3)

函数调用func(1.14, 3.33)不明确。 因为此处1.143.33两个都可以翻倍,并且两者都可以转换为intfloat,因此编译器不知道要调用哪个函数。 您可以通过明确告诉编译器常量类型func(float(1.14), float(3.33))或将重新定义func(float, float)更改为func(double, double)来解决此问题。
在这种情况下,明确告诉编译器使用哪种类型可能是一个更好的主意。