Использование & quot; двойного указателя & quot; динамический массив в переполнении стека

Итак, у меня есть задание, на котором я застрял, и я буду признателен за любую помощь.

По сути, у меня есть базовый класс и два класса, которые являются производными от этого базового класса, что не было проблемой. Но теперь мне нужно создать класс «контейнер», который имеет динамический массив «двойной указатель», содержащий экземпляры этих двух классов.

Моя проблема тогда: почему массив двойных указателей помогает мне здесь? Этот бизнес с двумя указателями кажется мне довольно запутанным. Посредством поиска в Google я обнаружил, что двойной указатель в основном является указателем на указатель, но как мне здесь помочь и как я могу объявить динамический массив с двумя указателями?

Кроме того, как я могу хранить два разных класса (хотя и производных от одного и того же базового класса) в одном массиве, разве это не два разных типа данных?

2

Решение

Вам нужен один указатель, чтобы сделать его массивом объектов, которые могут иметь любой производный класс — все объекты в массиве должен быть того же статического типа, поэтому вы хотите массив указателей на базовый класс. Таким образом, все элементы массива имеют одинаковый (указатель) тип, но любой из них может указывать на любой объект базового или любого производного класса.

Вам нужен второй указатель, чтобы сделать его динамическим массивом — массивы в C / C ++ имеют фиксированный размер, поэтому, если вы хотите иметь возможность изменять размер, вам нужно использовать указатель на массив неопределенного размера (который является просто указатель).

Таким образом, вам нужен указатель на указатель (двойной указатель) для вашего контейнера.

2

Другие решения


По вопросам рекламы [email protected]