所以我在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的代码,则该函数可以正常工作。为什么是这样?有没有一种简单的方法来解决这个问题? 正如您所看到的,我尝试在从数组中删除它之前返回一个值。我知道我应该使用矢量或其他标准方法,但我不能。我查看了我的教科书,但我无法找到我要找的东西。非常感谢任何帮助。
答案 0 :(得分:1)
您的代码中有两个int lastVal
语句 - 一个在for
循环之前,另一个在其中。尝试删除for
循环中的声明(并将其设置为作业lastVal = m_array[i];
),看看它是否有效。