Использование динамического массива с двумя указателями в C++
Итак, у меня есть задание, на котором я застрял, и я буду признателен за любую помощь.
По сути, у меня есть базовый класс и два класса, которые являются производными от этого базового класса, что не было проблемой. Но теперь мне нужно создать класс "контейнер", который имеет динамический массив "двойной указатель", содержащий экземпляры двух классов.
Моя проблема тогда: почему массив двойных указателей помогает мне здесь? Этот бизнес с двумя указателями кажется мне довольно запутанным. Посредством поиска в Google я обнаружил, что двойной указатель в основном является указателем на указатель, но как мне здесь помочь и как мне объявить динамический массив с двумя указателями?
Кроме того, как я могу хранить два разных класса (хотя и производных от одного и того же базового класса) в одном массиве, разве это не два разных типа данных?
1 ответ
Вам нужен один указатель, чтобы сделать его массивом объектов, которые могут относиться к любому производному классу - все объекты в массиве должны быть одного и того же статического типа, поэтому вам нужен массив указателей на базовый класс. Таким образом, все элементы массива имеют одинаковый (указатель) тип, но любой из них может указывать на любой объект базового или любого производного класса.
Вам нужен второй указатель, чтобы сделать его динамическим массивом - массивы в C/C++ имеют фиксированный размер, поэтому, если вы хотите иметь возможность изменять размер, вам нужно использовать указатель на массив неопределенного размера (который является просто указатель).
Таким образом, вам нужен указатель на указатель (двойной указатель) для вашего контейнера.