Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для Nishen
1359 / 857 / 366
Регистрация: 26.02.2015
Сообщений: 3,825

Исключение в конструкторе шаблонного класса

15.03.2017, 10:58. Показов 4183. Ответов 43

Студворк — интернет-сервис помощи студентам
Добрый день!
Пишу класс дробей и, соответственно, если пользователь введёт 0 в знаменатель с помощью оператора >> или с помощью конструктора с 2мя параметрами, то нужно вызвать исключение. Но как это сделать, я не понимаю.

Fraction.h
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
template <class T>
class Fraction {
 
    public:
        Fraction();
        Fraction(T n, T d);
        ~Fraction();
 
        template <class T>
        friend const Fraction<T>& lowterms(Fraction<T>& fraction);
 
        //I/O operators
        template <class T>
        friend std::istream& operator >> (std::istream& stream, Fraction<T>& fraction);
        template <class T>
        friend std::ostream& operator << (std::ostream& stream, const Fraction<T>& fraction);
 
        //THROWS
        class denominatorEqualsToZero {};
 
    private:
        T numerator;
        T denominator;
 
};
 
template <class T>
Fraction<T>::Fraction(T n, T d) : numerator(n) {
 
    if (d == 0) {
 
        throw denominatorEqualsToZero();
 
    }  else {
 
        denominator = d;
 
    }
 
    lowterms(*this);
 
}


Сделал так, но при генерации исключения возникает ошибка "Возникло необработанное исключение по адресу ... исключение Microsoft C++: Fraction<int>::denominatorEqualsToZero ..."

Скажите, пожалуйста, как правильно выполнять исключения в конструкторах и, тем более, в шаблонных.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2017, 10:58
Ответы с готовыми решениями:

Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса)
Всем доброго времени суток! Пытаюсь разобраться как работает приведенный мной код. Конкретно, пытаюсь разобраться что происходит в...

Параметр const T & val = T() в конструкторе шаблонного класса
Добрый день! Начал разбираться с шаблонами и наткнулся на такой пример: template &lt; typename T &gt; struct my_class { ...

Как бросить исключение из шаблонного класса?
Здравствуйте, уважаемые и умудренные опытом люди! Помогите мне пожалуйста в одном месте, у меня не выходит бросить исключение из шаблонного...

43
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.03.2017, 13:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от sys_beginner Посмотреть сообщение
С точки зрения пользователя это может не считаться ошибкой
нет, не может.

если с точки зрения пользователя деление на ноль может не считаться ошибкой,
то ему стоит подумать о смене профессии.

Цитата Сообщение от sys_beginner Посмотреть сообщение
Получаются данные откуда угодно - и передаются в конструктор объекта
см #26

Цитата Сообщение от sys_beginner Посмотреть сообщение
как конечный пользователь будет разбираться с ошибками?
см #39

Цитата Сообщение от sys_beginner Посмотреть сообщение
Казалось бы причем тут числа, ведь мы используем конечную библиотеку которая не является математической...
C++
1
2
template <class T>
class Fraction
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
16.03.2017, 13:48
Цитата Сообщение от hoggy Посмотреть сообщение
если с точки зрения пользователя деление на ноль может не считаться ошибкой,
то ему стоит подумать о смене профессии.
Я же говорю, пользователь может пользоваться такой библиотекой которая в свою очередь использует математическую библиотеку, но при этом пользователь библиотеки не знает, что его библиотека использует математическую библиотеку. И не надо ему знать, потому что сам он не использует её напрямую... Он использует ту библиотеку которую скачал.

Насчет см #, я уже ответил на содержимое этих постов
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
16.03.2017, 13:56
Цитата Сообщение от sys_beginner Посмотреть сообщение
Я же говорю, пользователь может пользоваться такой библиотекой
вообще никак не коррелирует с темой ассертов/экспешенов.
у вас какая то каша в голове.

Цитата Сообщение от sys_beginner Посмотреть сообщение
Насчет см #
см #37
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
16.03.2017, 14:23
Цитата Сообщение от hoggy Посмотреть сообщение
у вас какая то каша в голове.
Каши нет, я четко себе представляю о чем говорю
Наверное вы просто не поняли
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2017, 14:23
Помогаю со студенческими работами здесь

Исключение в конструкторе класса
Всем здравствуйте! Что будет с классом, если в его конструкторе вылетело и не перехватилось исключение. Например: ...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра?
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); } template &lt;class T&gt; void...

Вызов метода у шаблонного поля, шаблонного класса
Пытаюсь разобраться с шаблонами- задача создать шаблонный класс, у которого есть шаблонное поле. и затем вызывать метод у этого поля. ...

В конструкторе копирования отцовского (_str) класса возникает некое "необработанное исключение"
Добрый день. Делаю курсовик в универе, иерархия классов и работа с ними. В конструкторе копирования отцовского (_str) класса возникает...

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон контейнера (множество) с операциями...


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

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru