【发布时间】:2018-12-03 13:55:50
【问题描述】:
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;
}
}
}
我不知道为什么,但是编译器说这个函数必须返回一个值。 我那边已经有退货了。我做错了什么?
【问题讨论】:
-
如果
fileA的最后一行通过了,没有找到匹配id的nameA会发生什么? -
你的函数在哪里??你只贴了它的身体吗?如果是这样,那么您的函数必须具有最终的返回语句。或者每个执行分支必须有返回语句。
-
所有函数中声明为非空返回类型的控制路径必须具有确定的返回值。您的第一个 return ,
return;没有指定任何值,这对于有希望的函数没有意义。解决这个问题,考虑你的第二个,return lat;。当nameA == id从不为真时会发生什么。你的函数的结果是什么?简短回答:如果您承诺函数结果,请履行该承诺并确保 所有 控制路径导致确定的 something 的return。
标签: c++ visual-studio return return-value