Исправление исключения нулевого указателя в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Исправление исключения нулевого указателя в C++

Сообщение Anonymous »

В моем проекте C++ все классы используют класс связанного списка, и когда я запускаю проект, он выдает исключение nullptr:
Изображение

Я пытался решить проблему с помощью Copilot AI, но это не помогло не решишь мою проблему, он предоставил операторы отладки throw.
Код моего класса связанного списка:

Код: Выделить всё

#ifndef LINKEDLIST_H
#define LINKEDLIST_H

#include "Services.h"
#include "Employee.h"
#include "transaction.h"
#include "Citizen.h"
#include 
using namespace std;

template 
class Node {
public:
T data;
Node* next;
Node* prev;
Node(T val) : data(val), next(nullptr), prev(nullptr) {}
};

template 
class LinkedList {
private:
Node* head;
Node* tail;

public:
LinkedList() : head(nullptr), tail(nullptr) {}

Node* getHead() { return head; }
Node* getTail() { return tail; }

void addHead(T val) {
Node* newNode = new Node(val);
if (newNode == nullptr) {
throw std::runtime_error("Memory allocation failed for newNode.");
}

if (head == nullptr) {
head = tail = newNode;
} else {
newNode->next = head;
head->prev = newNode;
head = newNode;
}

// Debugging statements to ensure head and tail are not nullptr
if (head == nullptr || tail == nullptr) {
throw std::runtime_error("Head or Tail is nullptr after adding a new head.");
}

if (head->next != nullptr && head->next->prev != head) {
throw std::runtime_error("Incorrect previous pointer assignment in the linked list.");
}
}
};

#endif // LINKEDLIST_H
Я использовал этот связанный список для реализации очереди из узла гражданина и стека из узла транзакции, поэтому от него зависит весь мой проект

Подробнее здесь: https://stackoverflow.com/questions/793 ... ption-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»