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

Тип элемента массива базового класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать vector из объектов класса http://www.cyberforum.ru/cpp-beginners/thread1163632.html
Добрый вечер! У меня есть некий класс SuperClass, в котором есть динамическое поле: class SuperClass { public: int *v; SuperClass(int x){v = new int; *v = x;} ...
C++ Создать иерархию классов представляющих простое наследование Создать иерархию классов представляющих простое наследование. Базовый класс – вектор (числовой динамический массив (int *)). Производный класс – методы, работающие с данными базового класса. Реализовать в производном классе метод – упорядочивания значений в векторе таким образом , что бы положительные значения переместились в начало его, отрицательные в конец, а нулевые остались бы на своих... http://www.cyberforum.ru/cpp-beginners/thread1163622.html
Класс "Вектор" с перегрузкой операции [] C++
Создать несколько объектов (например, a и b) разработанного класса. Класс – вектор (одномерный массив). Реализовать для объектов данного класса перегрузку операции (a=b). Содержимое объектов (a,b их векторов), до и после выполнения операции, вывести на экран.
C++ Сортировка разворотом
Необходим отсортировать входной массив, используя только операции разворота первых k елементов. Необходимо вывести количество таких разворотов и каждое такое k
C++ Создать 2 объекта разработанного класса.С++ http://www.cyberforum.ru/cpp-beginners/thread1163619.html
Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы в объекте, содержащим строку с max длиной удалить последнее слово. Содержимое объектов (их строки) до и после обмена вывести на экран.
C++ Ошибка в сортировке массива по убыванию Подскажите в чем ошибка, сортирую массив по убыванию #include <iostream> #include <ctime> #include <cstdlib> using namespace std; подробнее

Показать сообщение отдельно
Fraxinus
 Аватар для Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
01.05.2014, 21:24     Тип элемента массива базового класса
Суть задачи такова: есть массив указателей базового класса. Одному из них я присваиваю указатель на производный класс. По логике, этот элемент массива должен быть типа производного класса. Но это не так.
Вопрос - как определить, чем является каждый элемент массива??

Здесь получаем yes:
C++
1
2
3
4
5
6
7
8
    class Base { virtual void gg(){} };
    class Derived : Base {};
        Base* pbase2 = new Base[2];
    Derived * fg = new Derived;
    pbase2[0] = *fg;
    if (typeid(Base) == typeid(&pbase2[0]))
        MessageBox("yes");
    else MessageBox("no");
Здесь получаем no:
C++
1
2
3
4
5
6
7
8
    class Base { virtual void gg(){} };
    class Derived : Base {};
    Base* pbase2 = new Base;
    Derived * fg = new Derived;
    pbase2 = *fg;
if (typeid(Base) == typeid(pbase2))
        MessageBox("yes");
    else MessageBox("no");
Что-то нехорошее с этм массивом. Ибо без массива указатели работают на ура...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru