stage->tiles[t] = new Tile();
Вы называете новым что-то, что не является указателем.Правда, плитка является указателем на массив, однако каждый элемент этого массива НЕ является указателем.Для этой работы вам понадобится массив указателей или указатель на указатель, например:
Tile **tiles;
Что вы также можете сделать, это создать отдельный объект указателя, выделить его, а затемскопируйте данные в элемент массива, используя
stage->tiles[i] = *somePointer;
, а затем удалите указатель, чтобы освободить выделенную память.Это сохранит копию, потому что вы вызвали конструктор копирования.