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

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

Войти
Регистрация
Восстановить пароль
 
diga
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
#1

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

16.05.2012, 19:55. Просмотров 249. Ответов 2
Метки нет (Все метки)

Уважаемые программисты, требовалось написать программу с обработкой исключения, я его написал, но когда писал появились некие проблемы которые меня и привели написать данную тему: и так, имеется код
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++
Здравствуйте, братья-программисты. У меня такая проблемулина: перехожу с delphi на cpp, решаю упражнения всякие, но вот с этим не понимаю...

Объяснить программу - C++
Объясните пожалуйста каждую строку. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; struct is_punct { ...

Объяснить программу - C++
объясните пожалуйста программу,что делается на каждом этапе.struct sp{ int inf; sp* adr;} sp *fst,*lst,*tmp; tmp=(sp*)malloc(vl); int...

надо объяснить программу С++ - C++
Здравствуйте! требуется помощь опытных людей! помогите пожалуйста описать и рассказать программу. что выполняет каждая строка. вообщем,...

Не могу объяснить программу - C++
#include &quot;stdio.h&quot; #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; //int _tmain(int argc, _TCHAR* argv) //{ ...

Объяснить небольшую программу - C++
Здравствуйте. можете написать что именно мы делаем в каждой строке? //Создайте класс, для которого возможно создание только одного...

Можете объяснить эту программу? - C++
Можете объяснить эту программу? пж #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;locale&gt; #define DLSTR 80 void COPY(char...

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

Объяснить программу (Алгоритм планирования, Планировщик) - C++
Друзья, кто нибудь помогите объяснить как работает программа, по какому алгоритму планирования работает Планировщик, что конкретно...

Нужно объяснить программу, т.е. какие процессы проходят - C++
// Laboratornaya_3.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 я прав?
Ответ Создать тему
Опции темы

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