【发布时间】:2017-01-13 08:31:33
【问题描述】:
我尝试过使用浮点和整数的重载。当我只使用整数时,代码工作正常,但是当我包含浮点数时,它给了我错误。代码如下:
#include <iostream>
using namespace std;
int calculate(int x,int y);
float calculate(float x,float y);
const int MAININT=4;
int main()
{
int result=calculate(5,5);
float fresult=calculate(7.5,7.5); LINE X
cout << (result + MAININT + fresult); LINE Y
return 0;
}
int calculate(int x,int y)
{
int result=x*y;
return result;
}
float calculate(float x,float y)
{
int result=x*y;
return result;
}
通过删除 LINE X 并从 LINE Y 删除,代码不会给我任何错误。所以我认为 LINE X 一定有问题,但我不明白为什么会出错。
我得到的错误信息是:
[Error] call of overloaded 'calculate(double, double)' is ambiguous
[Note] candidates are:
[Note] int calculate(int, int)
[Note] float calculate(float, float)
我不理解错误消息,所以我没有包含它们。我从songyuanyao的回答中理解了我做错了什么,但是下次我会从一开始就在我的问题中包含错误消息,以便更容易看到我在代码中做错了什么。
【问题讨论】:
-
错误信息应该有助于理解。你读了吗?
-
当您遇到此类问题时,发布确切的错误消息。
-
因不包含错误消息而投反对票。智能用户可能会搜索错误消息中的固定文本。没有错误,他们就找不到这个问题和答案。
标签: c++ overloading overload-resolution