私は周りを検索しましたが、これを実行するには、Baseクラスを変更する必要があり、これが最善のアプローチであるかどうかを知りたいようです。たとえば、Baseクラスがあります。
class Base {}
次に、派生クラスの長い行:
class Derived_1:: public Base {}
class Derived_2:: public Derived_1{}
...
...
class Derived_n:: public Derived_M{}
そして、私は別のクラスを持っています:
class DeepCopy
{
Base * basePtr;
public:
DeepCopy(DeepCopy & dc) {}
}
BaseクラスとDerived_xクラスのコピーコンストラクターが適切にコーディングされていると仮定すると、DeepCopyのコピーコンストラクターを作成するための最良の方法は何ですか。コピーしようとしているオブジェクトのbasePtrにあるクラスをどのように知ることができますか?
私が考えることができる唯一の方法はRTTIを使用することですが、dynamic_castsの長いリストを使用することは正しくないようです。さらに、DeepCopyはBaseクラスの継承階層について知る必要があります。
私が見た他の方法はここにあります。ただし、BaseクラスとDerivedクラスがcloneメソッドを実装する必要があります。
それで、これを行うためのはるかに簡単で標準的な方法はありますか?