У меня есть std::vector<std::unique_ptr<BaseType>>
.Есть ли какой-нибудь чистый способ сделать глубокую копию vector
?
Единственное, о чем я могу подумать, это иметь функцию, которая использует dynamic_cast
для извлечения производного типа, а затем скопировать этов новый объект, удерживаемый unique_ptr
.Учитывая, что у меня есть контроль над всеми возможными производными классами, это было бы возможно.У этого есть все виды очевидных недостатков.
Ранее я использовал единственный класс, который был объединением всех производных типов.Пытаясь уйти от этого, я столкнулся с необходимостью скопировать vector
.
. Есть ли какое-нибудь хорошее решение этой проблемы?Единственные решения, которые я могу придумать, безобразно безобразны и заставляют меня даже стыдиться.Это один большой шаг в попытке реорганизовать / очистить код, с которым я работаю.
vector
является членом класса, который должен быть копируемым.Итак, в этом случае мне просто нужно убедиться, что я могу написать конструктор копирования для содержащего класса.