我目前遇到的问题是无法将返回的指针设置为NULL 。
以下是代码的简化版:
const Item* Stack::removeItem() {
return pointer_to_item;
}
现在我尝试删除此项并将其设为NULL
bool Slots::removeItem(const Item & item) {
Item const *temp = stack[index]->removeItem(item);
delete temp;
temp = NULL;
return true;
}
此未设置返回的指针为NULL 。下次从堆栈访问项目时,不会设置变量(如Item中的memeber变量“id”)。
如果我将它设置为NULL 就像这样,就可以正常使用:
const Item* Stack::removeItem() {
pointer_to_item = NULL;
return pointer_to_item;
}
感谢您的解释!
答案 0 :(得分:2)
执行此操作时:
Item const *temp = stack[index]->removeItem(item);
delete temp;
temp = NULL;
您只需重置本地变量temp
,stack
的内容不会更改。
答案 1 :(得分:2)
如果我理解正确,你基本上想要的是这样的:
const Item* Stack::removeItem() {
Item *temp = pointer_to_item;
pointer_to_item = NULL;
return temp;
}