У меня есть абстрактный базовый класс с именем component .
Он получил неабстрактные классы, такие как резистор , генератор и т.д ...
В моем классе схема у меня есть гетерогенный std::vector<sim::component*>
с именем component_list
, который я использую для обработки всех компонентов, вставленных в схему.
Тогда у меня есть следующая функция:
void circuit::insert(sim::component& comp, std::vector<sim::node*> nodes)
В определении функции я хочу скопировать компонент с именем comp
чтобы вставить указатель на него в моем component_list
(чтобы я мог управлять его временем жизни)
Я пробовал что-то в этом роде:
sim::component *copy = new sim::component(comp)
но, конечно, sim :: component является абстрактным, и я не могу его создать
Как сделать копию объекта, реальный класс которого неизвестен во время компиляции?