错误:并非所有控制路径都返回值

Error: not all control paths return a value

本文关键字:控制 路径 返回值 错误      更新时间:2023-10-16

我正在程序中编写两个函数,以检查字符串的结构数组中是否分配了数字代码,或者给定的数字代码是否在同一结构数组中分配了字符串。基本上,如果我只知道其中一个,我就能得到另一个。我写了以下内容:

int PrimaryIndex::check_title_pos(std::string title) {
    bool findPos = true;
    if (findPos) {
        for (int s = 1; s <= 25; s++) {
            if (my_list[s].title == title) {
                return s;
            }
        }
    } else {
        return -1;
    }
}
std::string PrimaryIndex::check_title_at_pos(int pos) {
    bool findTitle = true;
    if (findTitle) {
        for (int p = 1; p <= 25; p++) {
            if (my_list[p].tag == pos) {
                return my_list[p].title;
            }
        }
    } else {
        return "No title retrievable from " + pos;
    }
}

然而,它表示并非所有控制路径都有返回值。我以为else{}语句可以处理这个问题,但事实并非如此。同样,我将默认的"return-1;"answers"return";"分别添加到处理int和string的适当函数中。这只是导致它出错了。

有什么想法可以让我保持这个代码,因为我想它能工作,但不能测试它,同时给我的编译器带来快乐?我通过其他搜索意识到,它看到的条件本来可能不会返回值,但理论上,如果我是对的,它应该可以正常工作。:|

感谢

在下面的代码段中,如果s迭代到26,而内部if从未计算到true,则永远不会到达return语句。

if (findPos) {
    for (int s = 1; s <= 25; s++) {
        if (my_list[s].title == title) {
            return s;
        }
    }
}