次のパターンは古く、よく知られています。多型オブジェクトのコピー
class A
{
public:
virtual A* clone() const
{
return new A(*this);
}
private:
int x = 666;
};
class B : public A
{
public:
virtual B* clone() const override
{
return new B(*this);
}
private:
int y = 777;
};
今私は他のオブジェクトからの多型の方法でオブジェクトをコピーしたいと思います。型のオブジェクトから
- コピーによるB型のオブジェクトを作成します。私のことができるようにしたいですタイプのオブジェクトから
- 私はケース1はスライス含まれていることを認識していますタイプB
のオブジェクトからコピーすることにより、タイプBのオブジェクトを作成するが、これは望まれています。 また、ケース3はy
をコピーしないことを認識していますが、これも望ましいです(デフォルトの初期値を使用したい)。
すべての4つのケースは、宛先タイプを知っていますが、実際のソースオブジェクトタイプを知らない多型で行う必要があります。
RTTIを使用せずに上記のパターンをどのように拡張できますか(または代替パターンはどのように見えますか)。