【问题标题】:Return statement breaking my function c++Return 语句破坏了我的函数 c++
【发布时间】:2018-03-05 23:19:24
【问题描述】:

所以我在 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 的代码,该函数将正常工作。为什么是这样?有没有简单的方法来解决这个问题? 如您所见,我试图在将其从数组中删除之前返回一个值。我知道我应该使用矢量或其他一些标准方法,但我不能。我查看了我的教科书,但找不到我要找的东西。非常感谢任何帮助。

【问题讨论】:

  • 请发布minimal reproducible example,以便我们查看您的代码正在执行的所有导致问题的操作。您提供的选择可能不足以向您指出代码中的实际问题
  • @xaxxon 我没有发布很多,因为它是一个项目,我不想将我的实际代码发布到互联网上。不过,我能够获得完整的帮助。以后会尽量完善。
  • 我认为这是一个错误。怀疑 OP 想表明两个副本是有用的
  • @xaxxon 我无法删除它,因为有答案。他们不允许你这样做。
  • 是的,很抱歉这是一个错误。

标签: c++ arrays return return-value


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多