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代码,该功能正常工作。为什么是这样?有没有简单的方法来解决这个问题? 正如你可以看到我试图返回一个值,然后将其从数组中删除。我知道我应该使用矢量或其他标准方法,但我不能。我看了看我的教科书,但是找不到我想要的东西。任何帮助是极大的赞赏。
答
您的两个代码int lastVal
语句 - 一个for
循环之前,一个在里面。尝试删除for
循环内的声明(并将其设置为赋值lastVal = m_array[i];
)并查看它是否有效。
请发布[mcve],以便我们可以看到您的代码正在执行的所有操作都会导致问题。您提供的选择可能不足以指出您的代码中的实际问题 – xaxxon
@xaxxon我没有发布很多,因为它的项目,我不想发布我的实际代码到互联网。尽管我能够得到完整的帮助。将来会尽量做得更完整。 –
我认为这是一个错误。怀疑OP想表明两个副本很有用 – Cuber