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

просто объяснить программу. - C++

Восстановить пароль Регистрация
 
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
16.05.2012, 19:55     просто объяснить программу. #1
Уважаемые программисты, требовалось написать программу с обработкой исключения, я его написал, но когда писал появились некие проблемы которые меня и привели написать данную тему: и так, имеется код
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
#include <iostream>
using namespace std;
 
class iskl
{
 public:
     int a; // число введенное пользователем 
     char *s;// вывод об ошибке 
    iskl(int aa,char *ss) // конструктор
     {
        a=aa;
        s=ss;
     }
};
 
int main()
{
    int b; // число для сравнения 
    try // блок где необходимо проверить исключительную ситуацию
    {
        cout << "Vvedite polojitelnoe chislo i ne nulevoe\n";
        cin >> b;
        if(b<0) throw iskl(b, "Error chislo<0"); // ловит и кидает в обработчик
        if (b==0) throw iskl(b, "Error chislo=0");
    }
    catch (iskl is)// обработчик исключение, вывод об ошибке
    {
        cerr<<is.s<<endl;
    }
    return 0;
 
}
вопрос заключается в следующем: почему в блоке catch надо класс вызывать именно таким образом?
знаешь что глупый вопрос но всё же,интересно. я сначало написал было след образом:
C++
1
2
3
4
5
    catch (iskl)// обработчик исключение, вывод об ошибке
    {
        cerr<<iskl<<endl;
    }
    return 0;
но компилятор ругался, затем после многих попыток все таки додумал что необходимо написать так как я писал выше. но не могу понять для чего?
C++
1
cerr<<is.s<<endl;
означает что я вывожу элемент класса типа char? заранее спасибо за объяснение

Добавлено через 1 минуту
Цитата Сообщение от diga Посмотреть сообщение
знаешь что глупый вопрос но всё же,интересно
ошибка хотел написать "знаю"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2012, 19:55     просто объяснить программу.
Посмотрите здесь:

C++ Объяснить программу
Объяснить программу C++
Не могу объяснить программу C++
C++ Нужно объяснить программу, т.е. какие процессы проходят
C++ Объяснить программу (Алгоритм планирования, Планировщик)
C++ Можете объяснить эту программу?
Объяснить алгоритм просто перебора C++
надо объяснить программу С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
16.05.2012, 20:22     просто объяснить программу. #2
В принципе, если хочешь выводить наподобие "cerr << iskl << endl;", то ты должен перезагрузить оператор << следующим образом:
C++
1
2
3
4
ostream& operator<<( ostream &out, iskl &myIskl )
{
    return out << myIskl.s;
}
И разместить эту функцию вне класса

Вообще, по стандартам программирования, рекомендуется наследовать все классы исключений от класса std::exception ( заголовок <stdexcept>, по-моему ) и там перегружать функцию what()
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
16.05.2012, 20:43  [ТС]     просто объяснить программу. #3
Цитата Сообщение от diga Посмотреть сообщение
Код C++
1
cerr<<is.s<<endl;
насчет того что тут вызывается элемен класса типа char я прав?
Yandex
Объявления
16.05.2012, 20:43     просто объяснить программу.
Ответ Создать тему
Опции темы

Текущее время: 04:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru