将具有 unique_ptr 的类的构造函数复制到抽象类作为成员

Eli*_*iad 5 c++ class copy-constructor c++11

我有一个类(C)用vectorunique_ptrs到一个抽象类(A)作为成员。这是因为C必须与所有类型的类一起使用A,即它的子类。

问题是我无法弄清楚如何为 编写复制构造函数C,因为在编译时不知道指针指向的对象的类型。在我看来,这实际上是不可能的。谁能确认这是不可能的?您对如何解决问题有什么建议吗?一个没有复制构造函数的类是不是太糟糕了?

sir*_*rge 2

您没有说您是否可以控制抽象类及其派生类的代码。Clone如果这样做,那么最简单的方法是在抽象类中提供纯虚方法并在派生类中实现它。此方法应该处理创建正确的副本。不幸的是,由于 unique_ptr 不可复制,您需要迭代向量并通过调用创建副本Clone