gpt4 book ai didi

c++ - 链接列表错误,C++

转载 作者:行者123 更新时间:2023-11-28 05:59:22 25 4
gpt4 key购买 nike

在我用来保存我正在制作的基于文本的 rpg list 的用户创建的链接列表中,我在我的链接列表中遇到删除功能错误。我想知道是否有人可以向我指出为什么会出现此错误。

void InventoryList::deleteNode(int num)
{
ListNode *previousNode; //To point to the previous node
ListNode *nodePtr; //to traverse the list

int number = 1;

//if the head is empty do nothing
if (!head)
{
return;
}
//Determine if the first node is the value
if (1 == num)
{

nodePtr = head->next;
delete head;
head = nodePtr;
}
else
{
//intialize the node as head.
nodePtr = head;


//Skip nodes whose value is not equal to num.
while (nodePtr != nullptr && number != num)
{
previousNode = nodePtr;
nodePtr = nodePtr->next;

number++;
}
if (nodePtr)
{
previousNode->next = nodePtr->next;
delete nodePtr;
}
}
}

我在代码的最终 if 语句中遇到此错误,错误是:

error C4703: potentially uninitialized local pointer variable 'previousNode' used

最佳答案

R Nar 的评论是正确的。不能保证初始化 PreviousNode 的 while 循环运行,因此指针可能未初始化 - 因此,您的错误消息。

要修复它,您需要在保证运行的 block 中初始化 PreviousNode - 没有 if/while/etc。

这可以放在任何地方,但我建议您在声明它时将它设置为 NULL,并在您使用它时检查以确保它不为空。当你声明和检查你的指针时,初始化总是一个好习惯。

关于c++ - 链接列表错误,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33577261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com