获取错误:控制到达非void函数的结尾不知道为什么

时间:2011-09-16 17:51:02

标签: c++ syntax

我一直收到以下错误,我不知道什么是错的

cc1plus: warnings being treated as errors
scene.cpp: In member function ‘Image* Scene::getpicture(int) const’:
scene.cpp:179: error: control reaches end of non-void function

以下是错误所在代码的一部分:

Image* Scene::getpicture(int index) const {

    if(index<0 || index >maximum)
        cout << "invalid index" << endl;
    else {
        return images[index]; 
    }
}

2 个答案:

答案 0 :(得分:5)

如果代码未输入else语句,则不返回任何内容。因此,您需要在结尾或输入if语句时插入一个返回。

答案 1 :(得分:3)

if语句的条件为真时,该函数不返回值,因为在这种情况下没有执行return语句。

您需要返回一个值(或抛出异常)。例如:

Image* Scene::getpicture(int index) const {
    if (index < 0 || index > maximum) {
        cout << "invalid index" << endl;
        return NULL;  // Return NULL in case of an invalid index
    } else {
        return images[index];
    }
}