首页 > 解决方案 > 编译器说这个函数必须返回一个值,但我已经有一个返回语句

问题描述

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;
    }

}

}

我不知道为什么,但是编译器说这个函数必须返回一个值。我那边已经有退货了。我究竟做错了什么?

标签: c++visual-studioreturnreturn-value

解决方案


第一个return不返回任何内容。它必须返回一个双精度值(函数的返回值是双精度)。

另外,不要忘记函数末尾的 return。如果getline()失败,while则不会激活,也不会return遇到语句。但是,这应该不是问题,因为return 0如果函数末尾没有显式的,编译器会隐式插入 a。


推荐阅读