Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 3
Регистрация: 24.03.2014
Сообщений: 95
1

Определить обработчик исключений на преобразование указателя базового класса на указатель производного класса

07.02.2016, 19:47. Просмотров 961. Ответов 1
Метки нет (Все метки)

Класс В является производным от класса А. Определить обработчик исключительной ситуации на преобразование указателя базового класса А на указатель производного класса В.

Помогите, а то ко мне никак не доходит)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2016, 19:47
Ответы с готовыми решениями:

Создание указателя типа базового класса на экземпляр производного класса
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса -...

Указатель на объект базового класса и адрес объекта производного класса
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; }...

Вызов виртуального метода базового класса из указателя производного
Допустим есть такой код: #include <iostream> class Base { public: virtual void f() {...

Почему объект производного класса не видит префиксный оператор из базового класса?
Короче создал я базовый класс с перегруженным префиксным оператором ++. Потом чтоб его...

1
Эксперт С++
8226 / 3814 / 826
Регистрация: 15.11.2014
Сообщений: 8,664
07.02.2016, 19:58 2
Лучший ответ Сообщение было отмечено VaMpIr_DEX как решение

Решение

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
#include <iostream>
#include <typeinfo>
 
 
// Класс В является производным от класса А. 
// Определить обработчик исключительной ситуации на преобразование указателя базового класса А 
// на указатель производного класса В.
 
int main()
{
    struct A { virtual ~A(){} };
    struct B: A {};
    struct C: A {};
    
    std::cout << "Hello, world!\n";
    
    try{
        
        A* p = new C;  //<--- создаем С
        
        
        B& b = dynamic_cast<B&>(*p); // а кастим к B
        // каст не правомерный 
        // потому что нельзя кастить к B,
        // если по факту там C        
    }
    catch(std::bad_cast& e)
    {
        // сработает защита времени выполнения
        // и мы сможем узнать причины
        std::cerr << e.what()<<std::endl;
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2016, 19:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вызов метода производного класса через обращение к методу базового класса
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp,...

Как сложить объект базового класса с объектом производного(наследуемого класса)
Как умножить объект базового класса с объектом производного(наследуемого класса): ozenka - объект...

Вызвать конструктор производного класса без конструктора базового класса
Здравствуйте! У меня есть базовый класс треугольник и производный класс равносторонний...

Что происходит когда передается в функцию базового класса аргумент с типом производного класса?
Есть функция перегруженного оператора&quot;+&quot; в производном классе и в базовом классе который принимает...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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