gpt4 book ai didi

c++ - 内部带有结构的类未实例化(立即出现段错误)

转载 作者:行者123 更新时间:2023-11-27 23:36:22 24 4
gpt4 key购买 nike

我相信我正在做的是使用循环链表实现一个队列。一旦我实例化一个 Queue 对象,它就会出现段错误。研究了这个问题,但在这一点上,我不知道真正出了什么问题,但我肯定它与 Queue 类有关。

我有一个 Queue 类来管理队列的操作,并在 Queue 类中有一个 QueueNode 结构来表示一个节点。队列类中的函数应该与结构对象一起使用。我将所有内容都剥离到最少的代码量,以使问题的重现性降至最低。

我有一个类规范文件、一个类实现文件和一个主要函数。真的很想得到一些帮助。

#ifndef queue_hpp
#define queue_hpp

class Queue
{

struct QueueNode
{
QueueNode *next;
QueueNode *prev;
int val;
QueueNode(int valueOne)
{
val = valueOne;
next = nullptr;
prev = nullptr;
}

};


QueueNode *head;

public:
Queue();
~Queue(); //Frees all memory of nodes in the queue
};


#endif
//Implementation file#include "queue.hpp"
#include <iostream>



/**********************************************************************************
** Queue constructor. Initializes head to null;
**********************************************************************************/
Queue::Queue()
{
head = nullptr;
head->prev = head;
head->next = head;

}


/**********************************************************************************
** Queue Destructor. Handles memory deallocation as queue goes out of scope
**********************************************************************************/
Queue::~Queue()
{


}

#include "queue.hpp"
#include <iostream>

using std::endl;
using std::cout;


int main()
{

Queue firstQueue;

cout << "Queue is created!" << endl;


return 0;
}

最佳答案

Queue 构造函数中,您将 head 设置为 nullptr ,然后在下一行中尝试取消引用它。取消引用 nullptr 是未定义的行为,可能导致段错误。

关于c++ - 内部带有结构的类未实例化(立即出现段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58932191/

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