编译器说此函数必须返回一个值,但我已经有一个return语句

时间:2018-06-25 03:18:29

标签: c++ visual-studio return return-value

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

}

}

我不确定为什么,但是编译器说此函数必须返回一个值。 我已经在那里退货了。我在做什么错了?

2 个答案:

答案 0 :(得分:2)

第一个return不返回任何内容。它必须返回一个double值(该函数的返回值为double)。

此外,不要忘记在函数结尾处返回。如果getline()失败,则while不会被激活,并且不会遇到任何return语句。但是,这应该不成问题,因为如果函数末尾没有显式的变量,编译器会隐式地插入return 0

答案 1 :(得分:0)

当fileA为true且nameA!= id时,此函数将不返回任何内容,无论如何,您都应确保函数返回任何内容。