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

时间:2014-09-20 23:45:25

标签: c++ return-value

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

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;”和“返回”“;”分别处理int和string的相应函数。这只是导致它出错。

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

由于

1 个答案:

答案 0 :(得分:7)

在下面的代码段中,如果s迭代到26而内部if没有评估到true,则永远不会达到return语句。

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