繁体   English   中英

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

[英]Copy constructor for a class with unique_ptr to an abstract class as a member

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

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

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

那么,既然std::unique_ptr<T>是不可拷贝,因此std::vector<std::unique_ptr<T>>是不可拷贝,因此Cstd::vector<std::unique_ptr<T>>作为成员不应该是默认可复制的。

你可以,当然,实现拷贝构造函数,使得深拷贝T ,但要看是什么T实际上是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM