在c ++中复制一个未知的具体类型

Nat*_*ate 5 c++ polymorphism inheritance

假设我们有以下类层次结构:

class Base {
    ...
};

class Derived1 : public Base {
    ...
};

class Derived2 : public Base {
    ...
};
Run Code Online (Sandbox Code Playgroud)

给定一个Base*可能点到任何一个Derived1Derived2反对我怎样才能使给定的,它的具体类型的实际对象的副本是未知的.我想过定义复制构造函数,但我不认为在不知道所涉及的实际类型的情况下这是可能的.我能想到的唯一解决方案是clone()在层次结构中为每种类型定义一个方法.任何人都可以想到更优雅的东西吗?

And*_*ant 13

不幸的是,虚拟克隆/复制模式是您唯一真正的选择.

这有各种变化,但基本上它们都归结为为每个可以返回新副本的类型编写函数.