c++ - 编译器说这个函数必须返回一个值,但我已经有一个返回语句
问题描述
double ProyectMethods::getLat(const char * id) {
ifstream fileA("C:\\Users\\Usuario\\Desktop\\mapas\\Aeropuertos.txt", ios::in);
string latS;
double lat;
string buffer;
string nameA;
size_t n;
size_t z;
if (!fileA) { return; }
while (getline(fileA, buffer))
{
n = buffer.find(";");
z = buffer.find(";", n + 1);
nameA = buffer.substr(0, n);
if (nameA == id)
{
latS = buffer.substr(n + 1, z);
lat = stod(latS);
return lat;
}
}
}
我不知道为什么,但是编译器说这个函数必须返回一个值。我那边已经有退货了。我究竟做错了什么?
解决方案
第一个return
不返回任何内容。它必须返回一个双精度值(函数的返回值是双精度)。
另外,不要忘记函数末尾的 return。如果getline()
失败,while
则不会激活,也不会return
遇到语句。但是,这应该不是问题,因为return 0
如果函数末尾没有显式的,编译器会隐式插入 a。
推荐阅读
- python - 使用 autofield 和 unique_constraint Django
- ios - 如何在横向实现广播上传扩展?
- arrays - 如何在不使用多个循环的情况下从字典列表中获取每个记录的单独字典?
- arrays - 使用单个字符串的子序列
- wordpress - 如何在属性项woocommerce之间添加br
- python-3.x - numpy使用切片选择子数组中的元素
- angular - 在Angular中单击“以上选项均无”时,有没有办法重置复选框项目的其余部分?
- ios - 是否可以在 iOS 上打开 RFCOMM 频道
- amazon-web-services - Amplify Headless Init 无法设置环境 - 尝试使用 aws/credentials 文件?
- java - JPQL 插入新实体违反外键约束