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

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

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

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

04.05.2014, 17:17. Просмотров 613. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 17:17     Генерация исключения в конструкторе
Посмотрите здесь:

C++ Ошибка в конструкторе
Исключения в конструкторе C++
C++ Двоеточие в конструкторе
Шаблон в конструкторе C++
проинициализировать строку в конструкторе C++
C++ Параметр в конструкторе копирования
C++ О конструкторе копирования
C++ Указатель this в конструкторе копирования
C++ Генерация исключения в конструкторе
C++ Генерация исключения bad_alloc в new
Explicit в конструкторе C++
C++ Исключения в конструкторе

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
04.05.2014, 18:24     Генерация исключения в конструкторе #2
Можно проверить нормально ли выделилась память, то есть не равен ли указатель NULL
Убежденный
Системный программист
Эксперт С++
15173 / 6805 / 1073
Регистрация: 02.05.2013
Сообщений: 11,118
Завершенные тесты: 1
04.05.2014, 18:37     Генерация исключения в конструкторе #3
Цитата Сообщение от Cer9 Посмотреть сообщение
Вопрос в том, что нужно проверить (в конструкторе), чтобы кинуть исключение для того, чтобы его обработать в функции
В данном случае - ничего.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.05.2014, 18:54     Генерация исключения в конструкторе #4
strlen не любит, когда в нее нулевой указатель передают.
вот и проверяйте, что аргумент конструктора s отлично от нуля.
если не так - бросайте исключение.
Cer9
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 23
04.05.2014, 19:59  [ТС]     Генерация исключения в конструкторе #5
Спасибо вам, натолкнули на мысль Буду пробовать.

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

Добавлено через 18 минут
Добавленный вопрос более не действителен Т.к. решение найдено.
Yandex
Объявления
04.05.2014, 19:59     Генерация исключения в конструкторе
Ответ Создать тему
Опции темы

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