设置返回指针NULL不起作用?

时间:2014-02-17 15:49:39

标签: c++

我目前遇到的问题是无法将返回的指针设置为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;
}

感谢您的解释!

2 个答案:

答案 0 :(得分:2)

执行此操作时:

Item const *temp = stack[index]->removeItem(item);
delete temp;
temp = NULL;

您只需重置本地变量tempstack的内容不会更改。

答案 1 :(得分:2)

如果我理解正确,你基本上想要的是这样的:

const Item* Stack::removeItem() {
    Item *temp = pointer_to_item;
    pointer_to_item = NULL;
    return temp;
}