我尝试使用控制台输入在C ++中对UPN计算器进行编程。 因此,我编写了一个节点和一个堆栈类,并在主类中使用它。开始时一切顺利,直到我开始将内容推入堆栈。然后,我得到一个“访问冲突写入异常”,并且不真正了解问题所在。
#include "pch.h"
#include "Node.h"
Node::Node(int value){this->value = value;}
int Node::GetValue(){return this->value;}
Node * Node::GetNode(){return this;}
Node* Node::GetNextNode(){return this->next_node;}
bool Node::SetNextNode(Node n)
{
this->next_node = &n;
return true;
}
Node * Node::GetBeforeNode(){return this->before_node;}
bool Node::SetBeforeNode(Node n)
{
this->before_node = &n; // <---- the error occures here
return true;
}
答案 0 :(得分:0)
请勿创建指向具有局部作用域的变量的指针。
您的Node n
按值传递给SetBeforeNode
,因此它被复制,取其地址,但是n
超出范围,而是停留在悬空的指针上,因此不是:
bool Node::SetBeforeNode(Node n)
应该是:
bool Node::SetBeforeNode(const Node& n)