Return语句打破我的函数C++

问题描述:

因此,我调用一个函数在主: B.remove()Return语句打破我的函数C++

哪个终于来了这里去 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代码,该功能正常工作。为什么是这样?有没有简单的方法来解决这个问题? 正如你可以看到我试图返回一个值,然后将其从数组中删除。我知道我应该使用矢量或其他标准方法,但我不能。我看了看我的教科书,但是找不到我想要的东西。任何帮助是极大的赞赏。

+4

请发布[mcve],以便我们可以看到您的代码正在执行的所有操作都会导致问题。您提供的选择可能不足以指出您的代码中的实际问题 – xaxxon

+0

@xaxxon我没有发布很多,因为它的项目,我不想发布我的实际代码到互联网。尽管我能够得到完整的帮助。将来会尽量做得更完整。 –

+0

我认为这是一个错误。怀疑OP想表明两个副本很有用 – Cuber

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