您好我正在尝试创建一个函数来使用Haversine公式计算2个位置之间的距离。
我为此创建了一个函数,其中包含<cmath>
和已定义的_USE_MATH_DEFINE
,
Travel distanceTo(Travel travel){
double a = 0, c = 0, dlat = 0, dlon = 0, lon2 = 0,lon1 = 0,lat2 = 0,lat1 = 0,distance = 0;
double R = 637300;
dlon = lon2 - lon1 * (M_PI/180);
dlat = lat2 - lat1 * (M_PI/180);
a = pow((sin(dlat / 2)), 2) + cos(lat1) * cos(lat2) * pow((sin(dlon / 2)), 2);
c = 2 * atan2(sqrt(a), sqrt(1 - a));
distance = R * c;
return distance;
}
我是c ++的新手,拥有相当基本的编程知识。我试图在 main.cpp 文件中调用此方法。因此
double distance = school.distanceTo(home)
。正如预期的那样,我收到一个错误警告我双重与Travel类型不兼容。我知道我没有在实际功能中引用/使用旅行,但我不知道如何正确实现它。
任何以正确方式执行此操作的示例都非常重要。
Travel对象包含(double lat, double long, string place, int time)
答案 0 :(得分:1)
只需将该功能的返回类型从Travel更改为double。
double distanceTo(Travel travel){