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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ (CИ)26. Определить сколько раз последовательность из N произвольных чисел меняет знак http://www.cyberforum.ru/cpp-beginners/thread277763.html
(СИ)Определить сколько раз последовательность из N произвольных чисел меняет знак
C++ Массивы Помогите решить задачу! Генератором сгенерировать массив на сто элементов чисел в диапазоне от 0 до 20. Каждый элемент - это количество выбоин на участке 100 метров дороги. Если до 10-и выбоин - хорошая дорога Рисуется символами *. После - плохая - символами #, Если подряд встречаются 3 и более плохих участков, этот сектор отдается для ремонта бригаде со спецтехникой. Рисуется символом $ ... http://www.cyberforum.ru/cpp-beginners/thread277760.html
C (СИ) Записать число в обратном порядке
записать число в обратном порядке например 12345 - 54321(СИ)
C++ не могу разобраться с ветвлением
есть задача:Вычислить y = x4+7x2+10/x, для x с шагом h = 0.01. решение: #include <iostream.h> #include <conio.h> int main() { // Программа печати таблицы функции double x=2,y; //Объявление переменных float h=0.01; cout <<"Программа печати таблицы функции y = x^4 + 7x^2 + 10/x\n"; BeginCycle: y = x*x*(x*x+7)+10/x; //Вычисление результата
C++ Интересно где же я запутал код http://www.cyberforum.ru/cpp-beginners/thread277731.html
Собственно сижу щас химичу с двумерными массивами и решил сложить сумму каждой строки отдельно, самое интересное что получилось, но к сожалению складывается только 1ая строка, а дальше ( 2ая и 3яя строка) я просто не понимаю откуда берутся цифры =) Собственно вот код #include <iostream> #include <math.h> #include <stdio.h> using namespace std; int main(int argc, char* argv)
C++ прграммка на C++ Здравствуйте! Не могли бы вы мне помочь? Нужно написать программу на C++ : Даны целые массивы A, B и значения R и F. Каждый массив пpеобpазовать по пpавилу: если отpицательных элементов в массиве больше 2, то пеpвый по поpядку отpицательный компонент заменить на значение R (для массива А) и значение F (для массива B). В пpотивном случае массив оставить без изменений. Я написал так, что... подробнее

Показать сообщение отдельно
AndreyBS
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 5
17.04.2011, 01:10     Как удалить объект по указателю на базовый класс?
Допустим есть несколько классов:

// абстрактный класс - введен для управления наследниками
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;
}
Это не красиво. Может как-то еще это можно сделать? Может хотя бы можно узнать тип класса, основываясь на его указателе?

 Комментарий модератора 
Используйте теги форматирования кода!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru