Меня интересует, есть ли лучший способ динамически создавать объекты из указателя базового класса. Вот пример моей ситуации:
// У меня есть массив указателей базового класса типа квадрат. Коробка получена из квадрата. Сначала я создаю новый объект-бокс с параметрами params с новым, используя квадратный указатель.
32 square * sqr_arr[10];
33
34 square * a_square;
35
36 a_square = new box(arr, 4, 5, 7);
37
38 box * temp = dynamic_cast<box *>(a_square);
39
40 sqr_arr[0] = new box(*temp);
41
42 sqr_arr[0]->display();
Моя проблема в том, что в моей настоящей программе я постоянно перемещаю указатели в массиве на основе сортировки по AZ, но я Я испытываю трудности с тем фактом, что каждый раз, когда мне нужно знать, какой производный класс я буду создавать вместо указателя, «зная», на что он указывает, и создавая объект этого типа.
Скажем, в Код выше я хотел переместить sqr_arr [0] в sqr_arr [1]. Есть ли в любом случае sqr_arr [1] сможет просто сделать копию с правильным использованием новой. Например, в моей настоящей программе sqr_arr может создавать много разных объектов, поэтому мое единственное решение - перебирать с помощью dynamic_cast, пока он не вернет приемлемый указатель на производную * temp. Это хорошее решение или его можно было бы разработать в по-другому?