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

Обработка исключений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не компилируется в Code::Blocks http://www.cyberforum.ru/cpp-beginners/thread523837.html
Установил на Windows 7 среду Code::Blocks 10.05 При нажатии на кнопку "Build and run" НИЧЕГО НЕ ПРОИСХОДИТ! В чем дело, подскажите, пожалуйста. В окошке лога пишет: "HelloWorld - Debug" uses an...
C++ поиск в массиве Надо в массиве найти положительные значения в промежутке между наибольшим и наименьшим элементом. Но в массиве наибольшие и наименьшие элементы повторяются, а значит имеется несколько промежутков.... http://www.cyberforum.ru/cpp-beginners/thread523829.html
C++ Заданы три функции. Определить, являются ли эти функции четными или нечетными
Заданы три функции y_1=x_3, \, y_2=x_3+1, \, y_3= \frac{1}{1+x_2} Определить, являются ли эти функции четными или нечетными.
В целочисленном массиве найти максимальный элемент среди четных и среди нечетных элементов C++
В целочисленном массиве X(N) найти max1 - максимальный элемент среди четных элементов массива и max2 - максимальный элемент среди нечетных элементов массива.
C++ Написать функцию вычисления формулы у=(х+10)*х-23 http://www.cyberforum.ru/cpp-beginners/thread523773.html
Написать функцию вычисления формулы у=(х+10)*х-23. Х ввести с клавиатуры вне функции. Результат вывести на экран вне функции.
C++ Найти расстояние между отрезком AB и прямой помогите написать, знаю как это в теории сделать, но не знаю как на си... Найти расстояние между произвольно заданными на плоскости отрезком AB и прямой, проходящей через точки С и D. Формат... подробнее

Показать сообщение отдельно
Rolik
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 11

Обработка исключений - C++

21.03.2012, 15:31. Просмотров 475. Ответов 1
Метки (Все метки)

класс B является производным от абстрактного класса А. Определить обработчик исключительной ситуации при преобразовании указателя на класс B до указателя на абстрактный класс.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
using namespace std;
 
class A 
{
    int x;
public:
    A(int x1=0):x(x1) {}
    ~A() {}
    virtual void Show()=0;
};
 
class B:public A
{
    int y;
public:
    B(int x1=0,int y1=0):A(x1),y(y1) {}
    ~B() {}
    virtual void Show();
};
 
 
void A::Show()
{
    cout<<x<<endl;
}
 
void B::Show()
{
    A::Show();
    cout<<y<<endl;
}
 
 
int main()
{
    B *pb;
    B b(1,2);
    pb=&b;
    b.Show();
    try
    {
        if (!dynamic_cast<A *>(pb))
            throw "Error.Ne pravulne pruvedenna tupiv\n";
        else 
            cout<<"Vse dobre\n";
}
catch (char *s)
{
    cout<<s;
}
return 0;
 
}
Не понимаю почему dynamic_cast не возвращает NULL при приведении указателя на класс B до указателя на класс A. Это же является опасной операцией. Можете сказать в чем ошыбка здесь .Может как-то подругому сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru