Форум программистов, компьютерный форум CyberForum.ru

Очередь С++ Проблема с удалением элементов класса очереди - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ реализовать класс http://www.cyberforum.ru/cpp-beginners/thread577858.html
Напишите пожалуйста программу на СИ++ реализовать класс Set-множество натуральных чисел-с помощью динамического массива типа boll. Значение i-го элемента массив указывает на присутствие/отсутствие числа i в данном множестве (при этом максимальный элемент в множестве должен соответствовать последнему элементу массива). Класс должен обеспечивать включение элемента в множество, исключение...
C++ Надо вывести график Я нубас помогите, нужно вывести график похожий на тот что я прикрепил, главное чтобы был похож на сигнал и присутствовал шум, и желательно с аномальными отклонениями, и я не знаю как все это сделать. И еще значения записать в переменные для работы с ними. http://www.cyberforum.ru/cpp-beginners/thread577832.html
Квадратная матрица A является симметрической, если для нее выполняется свой- ство AT=A. Проверить это свойство для матрицы A=A(n,n). Вычислить A-1. Уб C++
Помогите пожалуйста
Создать класс, содержащий сведения о личной коллекции книголюба C++
Создать класс, содержащий сведения о личной коллекции книголюба. Класс должен содержать следующие данные: шифр книги, автор, название, год издания, место расположения. Написать программу, выдающую следующую информацию: нахождение книги автора X названия Y (вводятся с клавиатуры), список книг автора Z, число книг определенного года издания, автора названия. Предусмотреть возможность добавления...
C++ Из массива целых чисел составить три других http://www.cyberforum.ru/cpp-beginners/thread577774.html
Из массива целых чисел составить три других, в первый из которых записать числа, кратные 5, во второй - числа, кратные 7, а в третий - остальные числа.
C++ Работа с текстовыми файлами Дан файл f компонентами которого являются целые числа.В файл g переписать все неположительные компонетны f кратные 8. подробнее

Показать сообщение отдельно
DS26
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 3

Очередь С++ Проблема с удалением элементов класса очереди - C++

17.05.2012, 17:35. Просмотров 752. Ответов 2
Метки (Все метки)

Разбираюсь с очередью. Не могу понять, где совершил ошибку: при компиляции компилятор ругается на необработанное исключение при удалении элемента из очереди, и соответственно, на деструктор. Вот сам код очереди:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Файл реализации QueueP.cpp абстрактной очереди.
// Реализация в виде связанного списка.
#include "stdafx.h"
 
Queue::Queue() : backPtr(NULL), frontPtr(NULL)
{
} // Конструктор no умолчанию
Queue::Queue(const Queue& Q)
{
// Реализуйте эту функции самостоятельно (упражнение 4).
} // Конец KoiiCTpyKTopa копирования
Queue::~Queue()
{
while (!isEmpty())
dequeue();
// Диагностическое утверждение: указатели frontPtr и backPtr
// равны константе NULL
} // Конец деструктора
bool Queue::isEmpty() const
{
return bool(backPtr == NULL);
} // Конец функции isEmpty
void Queue::enqueue(QueueItemТуре newItem)
{
// Создать новый элемент
QueueNode *newPtr = new QueueNode;
if (newPtr == NULL) // Проверка выделения памяти
throw QueueException(
"QueueException: enqueue — недостаточно памяти");
else
{
// Выделение памяти прошло успешно;
// записать данные в новый узел
newPtr->item = newItem;
// insert the new node
if (isEmpty ())
// Вставка элемента в пустую очередь
frontPtr = newPtr;
else
// Вставка элемента в непустую очередь
newPtr->next = backPtr;
backPtr = newPtr; // Новый элемент
// стоит в конце очереди
} // Конец оператора if
} // Конец функции enqueue
void Queue::dequeue()
{
if (isEmpty())
 throw QueueException(
 "QueueException: dequeue — очередь пуста");
else
 // Очередь не пуста. Удалить первый элемент.
{
QueueNode *tempPtr;
tempPtr = frontPtr;
if (frontPtr == backPtr) // Отдельная задача?
{
// Да, в очереди только один узел
frontPtr = 0;
backPtr = 0;
}
else
frontPtr = frontPtr->next;
tempPtr->next = 0; // Меры предосторожности
delete tempPtr;
} // Конец оператора if
} // Конец функции dequeue
void Queue::dequeue(QueueItemТуре& queueFront)
{
if (isEmpty())
throw QueueException(
"QueueException: dequeue — очередь пуста");
else
{
// Очередь не пуста. Удалить первый элемент
queueFront = frontPtr->item;
dequeue(); // Удалить первый элемент
} // Конец оператора if
} // Конец функции dequeue
void Queue::getFront(QueueItemТуре& queueFront) const
{
if (isEmpty())
throw QueueException(
"QueueException: getFront — очередь пуста");
else
// Очередь не пуста. Извлечь первый элемент.
queueFront = frontPtr->item;
} // Конец функции getFront
// Конец файла реализации.
В отдельный файл прикрутчена обработку исключений
C++
1
2
3
4
5
6
7
8
9
10
11
//QueueException.
#include "stdafx.h"
 
using namespace std;
class QueueException : public exception
{
public:
QueueException(const string & message="")
 : exception(message.c_str())
{}
}; // Конец класса QueueException
Подскажите, где накосячил!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru