Ключевое слово new
выполняет две операции: выделение и инициализация .
Когда вы вызываете new RectancleShape()
, сначала выделяет памяти в куче для хранения одного экземпляра RectangleShape
, а затем вызывает конструктор для инициализации этой памяти.
При вызове new RectangleShape[_size]
он выделит память в куче для хранения _size
экземпляров RectangleShape
и инициализирует их конструктором по умолчанию.
В вашем сценарии вы не хотите выполнять оба этих распределения. Вы либо хотите выделить память в массиве, либо хотите выделить и инициализировать каждый экземпляр отдельно, а затем сохранить указатели в массиве.
Вместо выделения нового экземпляра и указания на него head
, сначала выделите массив, затем укажите head
на первый элемент snake
.