@frilix
Иногда "творю"

Из-за чего вылетает ошибка?

В общем сами ошибки .
69efcc41e05d41e699edc58331e872fe.png
Содержание файлов:
main.cpp
#include <cstdlib>
#include <iostream>
#include "Dek.h"

using namespace std;

Dek<char> dek;

void Pause(void)
{
    char b;

    while(1){
        cout<< "\nНажмите ESC для продолжения\n";
        cin >> b;
        if(b == 27) break;
    }
}

void Push(void);
void Pop(void);
void Pop_Beg(void);
void Top(void);
void Print_Begin(void);
void Beg(void);

int main(void)
{
	char  menu;
	int run = true;

    setlocale(LC_CTYPE , "Russian");

    do {
       system("clear");
       cout << "ВСЕГО " << dek.Count() << " ЭЛЕМЕНТОВ" << endl;
       cout << "1.Добавить\n2.Извлечь последний элемент\n3.Извлечь первый элемент\n4.Показать последний элемент\n5.Показать первый элемент\n6.Отладочная печать\n7.Выход" << endl;
       cin >> menu;
       cin.clear();

       switch(menu)
       {
           case '1': Push(); break;
           case '2': Pop(); break;
           case '3': Pop_Beg(); break;
           case '4': Top(); break;
           case '5': Beg(); break;
           case '6': Print_Begin(); break;
           case '7': system("clear"); run = false;
       }
    }while(run);

	return 0;
}

void Push()
{
    system("clear");

    if(dek.Push())
        cout << "Элемент добавлен";
    else
        cout << "Дек  полный";

    cin.clear();
    Pause();
    return;
}

void Pop(void)
{
    system("clear");
    if(dek.Empty())
        cout << "Дек пустой";
    else
    {
        dek.Pop();
        cout << "Элемент удален";
    }

    Pause();
    return;
}

void Pop_Beg(void)
{
    system("clear");
    if(dek.Empty())
        cout << "Дек пустой";
    else
    {
        dek.Pop_Begin();
        cout << "Элемент удален";
    }

    Pause();
    return;
}


void Top(void)
{
    system("clear");
    if(dek.Empty())
        cout << "Дек пустой";
    else
        cout << dek.Top();

    Pause();
    return;
}

void Beg(void)
{
    system("clear");
    if(dek.Empty())
        cout << "Дек пустой";
    else
        cout << dek.Beg();

    Pause();
    return;
}

void Print_Begin(void)
{
    system("clear");
    if(dek.Empty())
        cout << "Дек пустой";
    else
        dek.Print_Begin();

    Pause();
    return;
}

Dek.h
#ifndef DEK_H
#define DEK_H

template <class DataType> class Dek
{
    private:
        struct Element
        {
          DataType data;
          Element *next, *prev;
        } * pdek;
        struct Element *beg;

    public:
        Dek ();
        ~Dek ();
        bool Empty (void);		
        DataType Top (void);	
        DataType Beg (void);	
        void Pop (void);	
        void Pop_Begin (void);
        int Push (void);       
        int Print_Begin (void);  
        int Count (void);
};

#endif // DEK_H

Dek.cpp
#include "Dek.h"
#include <iostream>

template <class DataType> Dek<DataType>::Dek ()
{
    pdek = NULL;
}

template <class DataType> Dek<DataType>::~Dek ()
{
    Element * temp;
    while (pdek)
    {
          temp = pdek;
          pdek = pdek->next;
          delete temp;
    }
}

template <class DataType> bool Dek<DataType>::Empty()
{
    if (pdek == NULL)
		return true;
	else
		return false;
}

template <class DataType> DataType Dek<DataType>::Top ()
{
	return pdek->data;
}

template <class DataType> int Dek<DataType>::Count ()
{
	int i;
	Element *count = pdek;

	while(count)
	{
        ++i;
        count = count->next;
	}

    return i;
}

template <class DataType> void Dek<DataType>::Pop ()
{
    if(pdek->next != NULL)
    {
        pdek = pdek->next;
        pdek->prev = NULL;
    }
    else
    {
        pdek = NULL;
        beg = NULL;
    }
}

template <class DataType> void Dek<DataType>::Pop_Begin ()
{
    if(beg->prev != NULL)
    {
        beg = beg->prev;
        beg->next = NULL;
    }
    else
    {
        pdek = NULL;
        beg = NULL;
    }
}

template <class DataType> DataType Dek<DataType>::Beg ()
{
	return beg->data;
}

template <class DataType> int Dek<DataType>::Push ()
{
	Element *ins = new Element;

    if (ins==NULL) return 0;
	if (pdek==NULL)
    {
        std::cout << "Введите значение" << std::endl;
        std::cin >> ins->data;
        pdek = ins;
        beg = ins;
        ins->next = NULL;
        ins->prev = NULL;
    }
    else
    {
        std::cout << "Введите значение" << std::endl;
        std::cin >> ins->data;
        ins->next = pdek;
        pdek->prev = ins;
        pdek = ins;
        pdek->prev = NULL;
    }
    return 1;
}

template <class DataType> int Dek<DataType>::Print_Begin()
{
    Element * temp;
    temp = beg;

    while (temp)
    {
          std::cout << temp->data;
          temp = temp->prev;
    }

    return 1;
}
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
У шаблонного класса методы размещаются в заголовке. Переносите.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы