2017-09-25 49 views
-1

因此,我調用一個函數在主: 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

回答

1

您的兩個代碼int lastVal語句 - 一個for循環之前,一個在裏面。嘗試刪除for循環內的聲明(並將其設置爲賦值lastVal = m_array[i];)並查看它是否有效。