Copiando un objeto polimórfico en C ++
Tengo clase baseBase
de donde se derivaDerived1
, Derived2
yDerived3
.
He construido una instancia para una de las clases derivadas que almaceno comoBase* a
. Ahora necesito hacer una copia profunda del objeto que almacenaré comoBase* b
.
asta donde yo sé, la forma normal de copiar una clase es usar constructores de copia y sobrecargaroperator=
. Sin embargo, ya que no sé sia
es de tipoDerived1
, Derived2
oDerived3
, No puedo pensar en una forma de usar el constructor de copia ooperator=
. La única forma en que puedo pensar para hacer que este trabajo funcione limpiamente es implementar algo como:
class Base
{
public:
virtual Base* Clone() = 0;
};
y el implementoClone
in en la clase derivada como en:
class Derivedn : public Base
{
public:
Base* Clone()
{
Derived1* ret = new Derived1;
copy all the data members
}
};
Java tiende a usarClone
bastante ¿hay alguna forma más de C ++ de hacer esto?