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

Преобразование типов с использованием dynamic_cast - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти с помощью Set и Multiset все такие цифры, которые не встречаются в двузначных числах http://www.cyberforum.ru/cpp-beginners/thread1779025.html
Найти все такие цифры, которые не встречаются в двузначных числах. #include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <set> #include <iterator> using namespace std; ifstream in ("input.txt");
C++ Сдвиг двумерного массива на n элементов Друзья перепробовал все.. ответ близок.. делаю все for'ами, скидывать что я писал не буду потому что они выдают у меня дичь. Я пытался копировать заданный массив в новый массив, только уже с порядком нужным учитывая сдвиг.. короче если кто поможет то условие задачи таково. Задача Создайте двухмерный массив. Заполните его случайными числами и покажите на экран. Пользователь выбирает... http://www.cyberforum.ru/cpp-beginners/thread1779010.html
C++ Разместить флажки на прямой как можно дальше друг от друга
На прямой отмечены N точек, имеющих координаты X0, X1, ..., XN - 1. В этих точках нужно расставить M флажков, причём флажки нужно разместить как можно дальше друг от друга. Назовём критической дистанцией расстояние между двумя ближайшими соседними флажками. Требуется расставить флажки так, чтобы критическая дистанция была как можно больше. Определите максимальное возможное значение...
C++ Сформировать одномерный массив, каждый элемент которого равен сумме цифр элемента исходного массива
Ребята, помогите решить задачу Только перешел на массивы Сформировать одномерный массив, каждый элемент которого равен сумме цифр соответствующего элемента исходного массива, состоящего из целых десятичных положительных чисел. кто возмется, большое спасибо если что, начало должно заключаться в #include<iostream> #include<windows.h>
C++ Почему Compilation error? http://www.cyberforum.ru/cpp-beginners/thread1778898.html
Дан некоторый набор букв и словарь. Ваша задача - подсчитать, сколько различных слов из словаря можно составить из этих букв. Входные данные В первой строке файла INPUT.TXT записано число N - количество слов в словаре (0 <= N <= 1000). В следующих N строках файла записано по одному слову из словаря. Слова содержат от 1 до 10 маленьких латинских букв. Все слова в словаре различны. В...
C++ Отобразить текущую дату Народ помогите плиз,только начал с классами разбираться,как можно сделать? Нужно создать класс DataAndTime с конструктором, использующим текущее время, возвращаемое функцией time() ( time.h ) и дату, полученную функцией gmtime(). подробнее

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

Преобразование типов с использованием dynamic_cast - C++

11.07.2016, 12:56. Просмотров 188. Ответов 4
Метки (Все метки)

Создать иерархию классов Grandpa-> Daddy-> Son.
o Класс Grandpa имеет виртуальную функцию Sleep().
o Класси Daddy та Son имеют виртуальные функции Walk().
o Клас Son имеет виртуальную функцию Play().
Создать массив указателей на базовий класс.
Написать глобальную функцию, которая получает массив указателей на объекты и для каждого объекта вызываетправильний набор виртуальных методов.
Использовать операцию dynamic_cast < >.

Я пока пишу в main, в функцию потом закину. Не получается преобразовать элемент массива. Когда пишу индекс массива daddy = dynamic_cast<Daddy*>(grandpa[1]); возникает ошибка. Помогите разобраться пожалуйста.

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
 
using namespace std;
 
class Grandpa
{
    string name;
public:
    Grandpa()
    {
        name = "Ivan";
    }
 
    Grandpa(string name)
    {
        this->name = name;
    }
 
    virtual void Sleep()
    {
        cout << "sleep" << endl;
    }
};
 
class Daddy : public Grandpa
{
public:
    Daddy(string name) : Grandpa (name){}
 
    virtual void Walk()
    {
        cout << "walk daddy" << endl;
    }
};
 
class Son : public Daddy
{
public:
    Son(string name) : Daddy(name){ }
 
    virtual void Walk()
    {
        cout << "walk son" << endl;
    }
 
    virtual void Play()
    {
        cout << "play" << endl;
    }
};
 
int main()
{
    int N = 3;
    Grandpa* grandpa = new Grandpa[N];
    
 
    grandpa[0].Sleep();
 
    Daddy* daddy;
    daddy = dynamic_cast<Daddy*>(grandpa[1]); // допоможіть будь-ласка, в чому тут помилка та як її вирішити?
    daddy->Sleep();
    daddy->Walk();
 
    Son* son;
    son = dynamic_cast<Son*>(grandpa);
    son->Play();
    son->Sleep();
    son->Walk();
    return 0;
}
помощью
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru