我有一个类(C
)和一个vector
的unique_ptr
到一个抽象类(A
)作为成员。这是因为C
必须适用于A
类型的所有类,即其子类。
问题是我无法弄清楚如何为C
写一个拷贝构造函数,因为在编译时指针所指向的对象类型是未知的。在我看来,这实际上是不可能的。谁能确认这是不可能的?您对解决问题有什么建议吗?没有复制构造函数的类太可怕了吗?
最佳答案
您没有说您是否可以控制抽象类及其衍生类的代码。如果这样做,那么最简单的方法是在抽象类中提供纯虚拟方法Clone
并在派生类中实现它。此方法应处理创建正确的拷贝。不幸的是,由于unique_ptr是不可复制的,因此您需要遍历 vector 并通过调用Clone
创建拷贝。