Я хотел бы хранить 3 типа унаследованных классов, которые я наследую от базового класса. Я хочу хранить указатели, которые указывают на базовый класс, в списке, который создает динамический массив этих указателей.
Мой список классов:
class list{
int n;
base **array;
public:
list() :n(0),array(NULL){};
void add(base* x);
~csapatlista(){
for(int i = 0;i<n;i++){
delete[] array[i];
}
};
Вот моя функция добавления.
void list::add(base* x){
base **temp;
temp = new base*[n+1];
for(int i = 0;i<n;i++){
temp[i] = array[i];
}
temp[n+1] = x;
if(array != NULL){delete[] *array;}
array = temp;
n += 1;
};
Базовый класс не содержит ничего, кроме 1-2 переменных типа.
По какой-то неизвестной мне причине моя программа вылетает или выдает ошибку memtrace, которая указывает, что что-то не так с моей функцией добавления. Также я до сих пор не совсем понимаю, как это может хранить унаследованные объекты, если мы храним только указатели на базовый класс.
Любая помощь приветствуется.