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

исключения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ переставить елементы массива http://www.cyberforum.ru/cpp-beginners/thread42819.html
Задали задачу: В массиве переставить значения в обратном порядке. Тоесть(1,2,3,4,5)надо перевернуть(5,4,3,2,1) Написал код ,вроде должен работать, но не работает. const int n=5; int...
C++ решение функции и запись результата в файл Условие в прилогаемом файле... http://www.cyberforum.ru/cpp-beginners/thread42816.html
C++ как осуществить статус загрузки?
помогите пожалуйста мне нужен код для проги чтобы код показывал статускакой то работы...скажем прога работает с файлом и закончит через 10 мин...это надо показывать в процентах так 10% 11% 80% и...
Синтаксическая ошибка!)) C++
Вот код: ==================================================================== #include <iostream> using namespace std; /*Напишите код, умножающий исходное число на 2, если оно принадлежит...
C++ Сравнить первый и второй элементы массива http://www.cyberforum.ru/cpp-beginners/thread42689.html
Здравствуйте. У меня возникли проблемы решением задачки. Подскажите формулу. "Дан 2 -ух мерный массив. Сравнить первый и второй элементы массива. Если второй элемент меньше первого, то поменяйте их...
C++ работа с звуками Состваить программу для воспроизведения 3-х аккордов с помощью нажатия клавиш. Длительность нажатия клавиши определять длительность звучания аккорда. Аккорды:Тоническое трезвучие(до+ми+соль),... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18032 / 6264 / 427
Регистрация: 30.03.2009
Сообщений: 17,219
Записей в блоге: 27
08.07.2009, 15:51
Добрые люди объяснили, для чегонужно использовать стандартный класс exception - чтобы в catch стояла обработка стандартного класса, а в своей реализации просто переопределять what. Изначально такая мысль и была, но в моём примере это не работало, а потому грешным делом подумал, что смысл не в этом. Сейчас буду думать, как должен выглядеть правильный исходник

Добавлено через 59 минут 20 секунд
Всё оказалось просто. В прототипе what я потерял "const throw()" (т.е. фактически другой прототип), а поэтому вместо того, чтобы преобпределить what из класса std::exception я сделал другую функцию с другим прототипом.

В итоге после замены 14 и 29 строк получился правильный код. Да и позиция преподавателя теперь понятна

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
#include <iostream.>
 
using namespace std;
 
class my_exception : public exception
{
  private:
    char str[100];
 
  public:
    my_exception () { strcpy (str, "default"); }
    my_exception (const char *s) { strcpy (str, s); }
 
    virtual const char* what (void) const throw() { return str; }
};
 
void func (void)
{
  cout << "throw" << endl;
  throw my_exception ("trampampam");
}
 
int main (void)
{
  try
    {
      func ();
    }
  catch (exception &e)
    {
      cout << "catch " << e.what() << endl;
    }
 
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru