【发布时间】:2018-05-05 12:11:28
【问题描述】:
我有一个名为 component 的抽象基类。 它派生了非抽象类,如 resistor、generator 等...
在我的电路类中,我有一个名为component_list的异构std::vector<sim::component*>,我用它来处理电路中插入的所有组件。
然后我有以下功能:
void circuit::insert(sim::component& comp, std::vector<sim::node*> nodes)
在函数定义中,我要复制名为comp的组件
为了在我的 component_list 中插入指向它的指针
(这样我就可以管理它的生命周期)
我尝试了一些类似的方法:
sim::component *copy = new sim::component(comp)
当然,sim::component 是抽象的,我无法实例化它
如何制作对象的副本,在编译时哪个真正的类是未知的?
【问题讨论】:
-
也许是
virtual克隆函数? -
可以工作,但感觉我不需要更改类来实现这一点......好吧,也许我别无选择?或者也许可以使用
insert的模板版本来完成? (只是突然出现在我的脑海中) -
如果你不能实例化
component,你如何传递对它的引用? -
@KillzoneKid 这不是对我传递的组件的引用,而是对基(可实例化)类的引用
标签: c++ pointers inheritance copy abstract-class