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;
}
}
}
我不确定为什么,但是编译器说此函数必须返回一个值。 我已经在那里退货了。我在做什么错了?
答案 0 :(得分:2)
第一个return
不返回任何内容。它必须返回一个double值(该函数的返回值为double)。
此外,不要忘记在函数结尾处返回。如果getline()
失败,则while
不会被激活,并且不会遇到任何return
语句。但是,这应该不成问题,因为如果函数末尾没有显式的变量,编译器会隐式地插入return 0
。
答案 1 :(得分:0)
当fileA为true且nameA!= id时,此函数将不返回任何内容,无论如何,您都应确保函数返回任何内容。