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

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

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

Генерация исключения в конструкторе - C++

04.05.2014, 17:17. Просмотров 650. Ответов 4
Метки нет (Все метки)

Добрый вечер! У меня возник вопрос с генерацией и перехватом исключений. Имеется код:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Mystring {
protected:
    int n;      //хранит дрину строки в байтах
    char *p;    //хранит адрес дин. выделенной памяти для размещения символов строки
public: 
    Mystring(){};   //конструктор без п-ов          
    Mystring(const char *s){ //конструктор, прин. п-р Си-строку
        n = strlen(s);
        p = new char[n+ 1];
            for (int i = 0; i < n; i++) p[i] = s[i];
            p[n] = '/0';};
    Mystring(char c){        //конструктор, прин. п-р символ
        p = new char[2];
        p[0] = c;
        p[1] = '\0';
        n = 1;};
    Mystring(const Mystring &str){  //конструктор копир.
        n = str.n;
        p = new char[n + 1];
        strcpy(p, str.p);};
    ~Mystring(){        //деструктор
        delete[] p;};


Вопрос в том, что нужно проверить (в конструкторе), чтобы кинуть исключение для того, чтобы его обработать в функции, ну допустим, пусть это будет main
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 17:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генерация исключения в конструкторе (C++):

Генерация исключения в конструкторе - C++
Преподаватель попросил добавить в программу исключения, чтобы если в класс придут некорректный данные класс то не терпел и ругался....

Исключения в конструкторе - C++
Приведите пожалуйста пример, где было бы видно как писать конструктор в классе (инициализация полями класса) используя исключения и нужны...

Исключения в конструкторе - C++
Допустим, при конструировании объекта необходимо выделить память для двух указателей-членов и правильно обработать все ошибки исключений....

Генерация исключения bad_alloc в new - C++
Прочитал, что в случае невозможности выделения памяти new возвращает 0, либо генерит bad_alloc. Пытаюсь обработать bad_alloc (на случай,...

О конструкторе копирования - C++
Доброго времени суток всем присутствующим. Интересует маленький вопрос. В 15-й строке происходит прямое обращение к полю входного объекта...

Explicit в конструкторе - C++
Ключевое слово explicit перед конструктором служит лишь для того чтобы не запутаться и передавать аргумент в конструктор явно? Например: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,214
04.05.2014, 18:24 #2
Можно проверить нормально ли выделилась память, то есть не равен ли указатель NULL
1
Убежденный
Системный программист
Эксперт С++
15550 / 7058 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
04.05.2014, 18:37 #3
Цитата Сообщение от Cer9 Посмотреть сообщение
Вопрос в том, что нужно проверить (в конструкторе), чтобы кинуть исключение для того, чтобы его обработать в функции
В данном случае - ничего.
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 18:54 #4
strlen не любит, когда в нее нулевой указатель передают.
вот и проверяйте, что аргумент конструктора s отлично от нуля.
если не так - бросайте исключение.
1
Cer9
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 23
04.05.2014, 19:59  [ТС] #5
Спасибо вам, натолкнули на мысль Буду пробовать.

Добавлено через 36 минут
Еще вопрос, если например у меня, помимо базового класса, есть 2 производных (такие же методы), то как это будет выглядеть через дополнительную функцию?

Добавлено через 18 минут
Добавленный вопрос более не действителен Т.к. решение найдено.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2014, 19:59
Привет! Вот еще темы с ответами:

Ошибка в конструкторе - C++
Почему пишет что отсутствуют нужные параметры конструктора? class Aircraft { public: Aircraft(int _maxSpeed, int _maxHeight) { ...

Шаблон в конструкторе - C++
class A { template &lt;class Type&gt; A(Type Object) { } friend class B; };

Двоеточие в конструкторе - C++
class A { public: A(): }; Что означает двоеточие и что туда надо писать?

Ошибка в конструкторе - C++
Написал задачу, но она не работает. Условие: Разработать класс Элементарная частица с элементами Название, Группа, Заряд, Масса покоя....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.05.2014, 19:59
Ответ Создать тему
Опции темы

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