返回语句破坏了我的函数c ++

时间:2017-09-25 04:18:00

标签: c++ arrays return return-value

所以我在main中调用一个函数: B.remove()

哪里去了 m_arrays[m_oldest]->remove()

然后终于来了:

int MyClass::remove() {
    cout << "this is the remove function"<< endl;  //debugging line

    int lastVal = 0;

    for (int i = start; i < capacity; i++) {  //actual remove function
        if (m_array[i] != NULL) {
            int lastVal = m_array[i];
            m_array[i] = NULL;                  // sets to null
            m_size--;                           //increment
            break;
        }
    }
    m_start++;                                  //increment
    return lastVal;
}

如果我删除包含lastVal的代码,则该函数可以正常工作。为什么是这样?有没有一种简单的方法来解决这个问题? 正如您所看到的,我尝试在从数组中删除它之前返回一个值。我知道我应该使用矢量或其他标准方法,但我不能。我查看了我的教科书,但我无法找到我要找的东西。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您的代码中有两个int lastVal语句 - 一个在for循环之前,另一个在其中。尝试删除for循环中的声明(并将其设置为作业lastVal = m_array[i];),看看它是否有效。