函数重载出现这个错误:2 overloads have similar conversions

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:27:36
#include "stdafx.h"
#include "iostream.h"
#include "math.h"

float dis(int a, int b, int c,int d)
{
return (float)sqrt((a-c)*(a-c)+(b-d)*(b-d));
}

double dis(double a,double b,double c,double d)
{
return sqrt((a-c)*(a-c)+(b-d)*(b-d));
}
void main ()
{
cout<<"点(0,0)与点(3,4)的距离为:"<<dis(0,0,3,4)<<endl;
cout<<"点(11.2,-25)与点(0.33,11.22)的距离为:"<<dis(11.2,-25,0.33,11.22)<<endl;
}

把你的-25修改成-25.0.
编译器找不到匹配的函数. 它会试图将参数进行转换来匹配.
过程如下:
<>先匹配左一参数.
Double,找到唯一的参数与之对应. Dis(double...) 这个.
接着 找左二的参数发现: Dis(int, int ,...) Dis(double, Double..)丙个都可以匹配,所以,编译器报错.
信息来源:C++ Primer plus中文第五版243页.