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

Как удалить объект по указателю на базовый класс? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ (CИ)26. Определить сколько раз последовательность из N произвольных чисел меняет знак http://www.cyberforum.ru/cpp-beginners/thread277763.html
(СИ)Определить сколько раз последовательность из N произвольных чисел меняет знак
C++ Массивы Помогите решить задачу! Генератором сгенерировать массив на сто элементов чисел в диапазоне от 0 до 20. Каждый элемент - это количество выбоин на участке 100 метров дороги. Если до 10-и выбоин -... http://www.cyberforum.ru/cpp-beginners/thread277760.html
C++ не могу разобраться с ветвлением
есть задача:Вычислить y = x4+7x2+10/x, для x с шагом h = 0.01. решение: #include <iostream.h> #include <conio.h> int main() { // Программа печати таблицы функции double x=2,y; //Объявление...
Интересно где же я запутал код C++
Собственно сижу щас химичу с двумерными массивами и решил сложить сумму каждой строки отдельно, самое интересное что получилось, но к сожалению складывается только 1ая строка, а дальше ( 2ая и 3яя...
C++ Удалить слова, состоящие ровно из К символов http://www.cyberforum.ru/cpp-beginners/thread277725.html
Ввести стоку, распечатать. Удалить слова, состоящие ровно из К символов.Результирующию строку распечатать. Помогите кто может!
C++ прграммка на C++ Здравствуйте! Не могли бы вы мне помочь? Нужно написать программу на C++ : Даны целые массивы A, B и значения R и F. Каждый массив пpеобpазовать по пpавилу: если отpицательных элементов в... подробнее

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

Как удалить объект по указателю на базовый класс? - C++

17.04.2011, 01:10. Просмотров 2934. Ответов 13
Метки (Все метки)

Допустим есть несколько классов:

// абстрактный класс - введен для управления наследниками
C++
1
2
3
class A{
... 
}
// рабочий класс 1
C++
1
2
3
class B: virtual public A{
... 
}
// рабочий класс 2
C++
1
2
3
class С: virtual public A{
... 
}
// контейнер - управляет всеми рабочими классами через класс А
C++
1
2
3
4
5
6
7
8
9
class D
A *_array_of_A[];
...
 _array_of_A[0] = new B;
 _array_of_A[1] = new C;
...
delete (B *)_array_of_A[0];
delete (C *)_array_of_A[1];
}
Вопрос: можно ли удалить объект класса B или C, не зная тип класса, но имея указатель на их базовый класс А?

Это нужно, чтобы удалять объекты из массива _array_of_A "универсальным способом". Можно, конечно, ввести в класс А переменную Type и удалять по условию:
C++
1
2
3
4
switch(_array_of_A[n]->Type){
case TypeA: delete (A *)_array_of_A[n]; break;
case TypeB: delete (B *)_array_of_A[n]; break;
}
Это не красиво. Может как-то еще это можно сделать? Может хотя бы можно узнать тип класса, основываясь на его указателе?

 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru