С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Связанный двусторонний список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составление блок-схемы http://www.cyberforum.ru/cpp-beginners/thread150419.html
Помогите пожалуйста составить блок схему к данной програмке: #include <iostream> #include <conio.h> #include <math.h> using namespace std; float sqr(float x) {
C++ Организовать функцию Дорогие форумчане,Надо Организовать функцию определения большего из двух чисел,которы передаются в функцию по ссылке..Буду очень признателен!!! http://www.cyberforum.ru/cpp-beginners/thread150406.html
Начинающий изучать C++ (подскажите литературу) C++
Здравствуйте всем, я хочу начать изучать C++, мне нужно чтоб мне посоветовали какие книжки почитать, для изучения синтаксиса языка C++ да и вообще, что-нибудь типа Фаронова для Делфи, то же самое и...
Дан символ "с" C++
Дан символ "с". Вывести символ, который в кодовой таблице следует за символом "с".
C++ компилирую данный фаил с расширением *.h http://www.cyberforum.ru/cpp-beginners/thread150398.html
компилирую данный фаил с расширением *.h выдаёт ошибку в третей стоке. не могу понять причину. а потом, после первой компиляции и сообщения об ошибке, когда пробую компилирывать ещё раз, он просто...
C++ Вычислить сумму целых частей элементов массива В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму целых частей элементов массива, расположенных после последнего отрицательного элемента подробнее

Показать сообщение отдельно
Spellz
1 / 1 / 0
Регистрация: 29.01.2010
Сообщений: 25

Связанный двусторонний список - C++

29.06.2010, 19:57. Просмотров 1955. Ответов 19
Метки (Все метки)

Решил написать свой двусторонний список и совершенно внезапно столкнулся с проблеммой отчистки. Итак вот класс элемента списка и его деструктор:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <class T>
class mListNode
{
public:
    mListNode();
    mListNode(const mListNode<T>&);
    ~mListNode();
    void setNext(mListNode* newNext) { next = newNext;};
    void setPrev(mListNode* newPrev) { prev = newPrev;};
    void setInfo(T* inf)             { info = inf;  };
    mListNode* getNext() const       { return next; };
    mListNode* getPrev() const       { return prev; };
    T* getInfo() const               { return info; };
    mListNode<T>& operator= (const mListNode<T>&);
protected:
    T* info;
    mListNode* prev;
    mListNode* next;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
mListNode<T>::~mListNode()
{
    cout << "info\n";
    delete info;
    info = NULL;
    cout << "prev\n";
    delete prev;
    prev = NULL;
    cout << "next\n";
    delete next;
    next = NULL;
}
Объявления класса списка, функции удаления:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <class T>
class mList
{
public:
    mList() { size = 0; head = 0;};
    mList(const mList<T>&);
    //~mList();
    void pushBack(T& inf);                      
    void pushTop(T& inf);                       
    mList<T>& operator=(const mList<T>&);
    T& operator[] (unsigned int num) const ;    
    void clear();                              
    void popFront();
    class exOutOfRange { };                     // oor exeption
protected:
    mListNode<T>* head;
    unsigned int size;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <class T>
void mList<T>::clear()
{
    if (size == 0)
        return;
    while (size != 0)
    {
        popFront();
    }
 
}
template <class T>
void mList<T>::popFront()
{
    if (size == 0)
        return;
    mListNode<T>* tmp = head;
    head = head->getNext();
    delete tmp;
    size--;
    head->setPrev(NULL);
 
}
Подабавлял int, нормально выводит. При попытке вытолкнуть элемент или очистить (впринципе одно и тоже) программа крашиться в консоли последняя строчка info (см деструктор элемента списка) и вываливается сообщение:

Debug Assertion Failed!
...dbgdel.cpp
line:52

Expression: _BLOCK_TYPE_IS_VALID (pHead->nBlockUse)

Как понимаю я по многу раз удаляю одно и тоже, но никак не могу понять где утечка >.<
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.