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

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

Восстановить пароль Регистрация
 
РагнаР
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 27
20.02.2011, 21:15     Классы и исключения #1
Нужна помощь. Есть класс, в котором определен класс исключение.
Как этот класс вызвать в дружественной функции?
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++ Исключения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 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++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
20.02.2011, 22:06     Классы и исключения #4
можно и не писать
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 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     Классы и исключения
Ответ Создать тему
Опции темы

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