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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xaro
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 22
#1

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

27.04.2017, 12:05. Просмотров 194. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как создать класс-исключение? (C++):

Исключение как пустой класс - C++
Добрый день. В задании лабы сказано: исключение реализовать,как пустой класс. Перехват и обработка исключения в главной функции. Сама...

Как создать динамический массив типа string? Как создать класс такого массива? - C++
Как создать динамический массив типа string? Как создать класс такого массива? =-O Помогите, пожалуйста, очень нужна помощь!

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

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

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

Как создать класс кот может создать general purpose counting objects - C++
Как создать класс (CounterType) кот может создать general purpose counting objects. Этот объект содержит an integer count. но не может...

2
Croessmah
Ушел
13783 / 8033 / 928
Регистрация: 27.09.2012
Сообщений: 19,804
Записей в блоге: 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
шКодер самоучка
1874 / 1674 / 608
Регистрация: 09.10.2013
Сообщений: 3,719
Записей в блоге: 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
Привет! Вот еще темы с ответами:

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

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

Как создать класс матрица с атрибутами private! - C++
Описать класс матрица в которой содержатся следующие атрибуты: private-3 матрицы одинаковой размерности три на три и методы класса...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...


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

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

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