我有一个类(C)和一个vectorunique_ptr到一个抽象类(A)作为成员。这是因为C必须适用于A类型的所有类,即其子类。

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

最佳答案

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

08-05 14:59