У меня есть класс (C
) с vector
из unique_ptr
s в абстрактный класс (A
). Это связано с тем, что C
должен работать со всеми классами типа A
, то есть с его дочерними элементами.Копировать конструктор для класса с unique_ptr в абстрактный класс как член
Проблема в том, что я не могу понять, как написать конструктор копирования для C
, так как тип объектов, на которые указывают указатели, неизвестен во время компиляции. На самом деле это кажется мне невозможным. Кто-нибудь может подтвердить, что это невозможно? Есть ли у вас какие-либо предложения по решению проблемы? Это слишком ужасно, чтобы иметь класс без конструктора копирования?
* Это слишком ужасно, чтобы иметь класс без конструктора копирования? * Нет, все в порядке. Например, 'unique_ptr' не имеет его, как вы могли заметить. –
Одним из решений является добавление функции-члена 'virtual A * clone() = 0;' to 'A'. – Pubby
[Сделайте то, что сказал Pubby] (https://isocpp.org/wiki/faq/abcs#copy-of-abc-via-clone), но только если вам нужно, чтобы 'C' был создан для копирования. Нет ничего плохого в том, что у вас есть классы, не подлежащие копированию, это полностью зависит от вашего варианта использования. – Praetorian