【发布时间】:2015-08-18 08:31:40
【问题描述】:
我有一个类 (C) 与一个抽象类 (A) 的 unique_ptrs 的 vector 作为成员。这是因为C 必须与A 类型的所有类一起使用,即它的子类。
问题是我无法弄清楚如何为C 编写一个复制构造函数,因为在编译时指针所指向的对象的类型是未知的。在我看来,这实际上是不可能的。谁能确认这是不可能的?您对如何解决问题有什么建议吗?没有复制构造函数的类是不是太糟糕了?
【问题讨论】:
-
没有复制构造函数的类是不是太糟糕了? 不,没关系。例如,
unique_ptr没有您可能已经注意到的。 -
一种解决方案是将成员函数
virtual A* clone() = 0;添加到A。 -
Do what Pubby said,但前提是您需要
C可复制构造。拥有不可复制的类并没有错,这完全取决于您的用例。 -
你认为这个副本会做什么?如果您还打算复制
unique_ptrs 指向的所有对象,那么唯一的方法是A必须包含一个克隆函数。
标签: c++ class c++11 copy-constructor