Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
xaro
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 22
#1

Как создать класс-исключение?

27.04.2017, 12:05. Просмотров 266. Ответов 2
Метки нет (Все метки)

Написать шаблонный класс согласно варианту. Описать класс-исключение или иерархию классов-исключений. Генерировать исключения в соответствующих исключительных ситуациях.

Задание: очередь из максимальных элементов типа T.
Параметры шаблона: int T, class T.
Исключения: переполнение очереди. Изъятие элемента из пустой очереди.



Как написать шаблонный класс - это понятно. Но как создать класс-исключение?

Вот мой набросок, который не работает.

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
template <class T, int N>
class Queue {
private:
    T *que;
    int size, i;
public:
    Queue() { 
        que = new T[N];
        size = N;
        i = 0;
    };
 
    void push(T a) {
        try {
            if (i>=N) {
                throw "Невозможно добавить элемент. Очередь заполнена.\n";
            }
            que[i] = a;
            cout << "Элемент " << a << " успешно добавлен в стек под номером " << i << endl;
            i++;
        }
        catch(string str){
            cout << str << endl;
            }
    }
 
    void pop() {
        try {
            if (i == -1) {
                throw "Невозможно изъять элемент. Стек пуст.\n"
            }
            que.pop_back();
            i--;
            cout << "Элемент " << que[i] << " успешно изъят из стека\n";
            }
            catch (string *str) {
                cout << str << endl;
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2017, 12:05
Ответы с готовыми решениями:

Исключение как пустой класс
Добрый день. В задании лабы сказано: исключение реализовать,как пустой класс....

Как создать динамический массив типа string? Как создать класс такого массива?
Как создать динамический массив типа string? Как создать класс такого массива? ...

Как создать класс со вложенной структурой указателей на класс?
В классе Concept хранится массив (точнее map) структур Rel. Сама же структура...

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ...
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить...

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким...

2
Croessmah
++Ͻ
14503 / 8285 / 1556
Регистрация: 27.09.2012
Сообщений: 20,336
Записей в блоге: 3
Завершенные тесты: 1
27.04.2017, 12:11 #2
Цитата Сообщение от xaro Посмотреть сообщение
Но как создать класс-исключение?
C++
1
2
3
4
class my_exception_class_name: public std::exception
{
   //реализация
};
0
Max Dark
шКодер самоучка
1945 / 1738 / 857
Регистрация: 09.10.2013
Сообщений: 3,846
Записей в блоге: 6
Завершенные тесты: 2
27.04.2017, 12:21 #3
Цитата Сообщение от xaro Посмотреть сообщение
Но как создать класс-исключение?
сделать его наследником от одного стандартных классов-исключений.
C++
1
2
3
4
5
6
7
8
9
10
#include <stdexcept>
 
class BasicQueueException : public std::logic_error {
public:
    explicit BasicQueueException(const char* message):std::logic_error(message) {}
};
class EmptyQueueException : public BasicQueueException {
public:
    explicit EmptyQueueException() : BasicQueueException("Queue is empty") {}
};
Использование
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Queue:::pop() {
    if(isEmpty()) throw EmptyQueueException();
    // ....
}
 
// ...
try
{
    q.pop();
}
catch(BasicQueueException& e) {
    std::cerr << e.what() << std::endl;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2017, 12:21

Как создать класс кот может создать general purpose counting objects
Как создать класс (CounterType) кот может создать general purpose counting...

Создать класс - данные - абстрактный базовый класс. Создать производные классы
Всем привет! У меня вот такая проблема.... Создать класс - данные -...

Объясните, как создать класс
Описать класс, включающий заданные поля и функции. Разработать программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru