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

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

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

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

20.02.2011, 21:15. Просмотров 511. Ответов 5
Метки нет (Все метки)

Нужна помощь. Есть класс, в котором определен класс исключение.
Как этот класс вызвать в дружественной функции?
C++
1
2
3
4
5
6
7
8
class number
{
private:
    int *num;
    int size;
public:
    class error{};
friend number operator -(int ,const number&);
C++
1
2
3
4
5
6
7
8
9
10
number operator -( int a,const number& z)
{
    number sum,x(a),c=z;
    if(c>=x)
        sum.size=c.size;        
    else
    {
        //throw error();// Вот в этой строке нужно вызвать класс исключения
//но вызов z.error() выдает ошибку error C2274: 'function-style cast' : illegal as right side of '.' operator
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 21:15     Классы и исключения
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
20.02.2011, 21:31     Классы и исключения #2
C++
1
throw new number::error();
РагнаР
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 27
20.02.2011, 21:47  [ТС]     Классы и исключения #3
А слово new точно нужно?
С ним выдавало ошибку, а когда убрал вроде как заработало.
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
20.02.2011, 22:06     Классы и исключения #4
можно и не писать
Somebody
2781 / 1595 / 143
Регистрация: 03.12.2007
Сообщений: 4,179
Завершенные тесты: 1
20.02.2011, 22:23     Классы и исключения #5
Если кто-то сделал new, кто-то должен сделать и delete. Так что не надо new.
РагнаР
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 27
08.03.2011, 21:06  [ТС]     Классы и исключения #6
Еще один вопрос.

Довольно странное(для меня) поведение исключения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
number number::operator -(const number &a)const
{
    number sum;
    sum.Erase();
    number c(*this);
    if(c<a)
    {
        throw error();      
    }
    else
    {
        sum.size=c.size;    
    }
Это исключение обрабатывается как стандартное(то есть выскавивает сообщение об ошибке)
А если же записать так:
C++
1
2
3
4
5
6
number number::operator -(const number &a)const
{
    number sum;
        throw error();
    sum.Erase();
    number c(*this);
то обрабатывается, как мое исключение(то есть выполняет то, что написано в catch. Не могу понять почему, ведь должно обрабатывать одинаково.
Yandex
Объявления
08.03.2011, 21:06     Классы и исключения
Ответ Создать тему
Опции темы

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