Aquí es lo que estoy tratando de hacer (este código no funciona):¿Cómo se puede clonar una clase C++ derivada a través de un puntero base?
class Base
{
virtual Base *clone() { return new Base(this); }
virtual void ID() { printf("BASE");
};
class Derived : publc Base
{
virtual Base *clone() { return new Derived(this); }
virtual void ID() { printf("DERIVED"); }
}
.
.
Derived d;
Base *bp = &d;
Base *bp2 = bp->clone();
bp2->ID();
lo que había como es ver "derivados" impreso ... lo que consigo es "el punto ". Soy un programador de C desde hace mucho tiempo, y tengo bastante experiencia con C++ ... pero no estoy progresando con esto ... cualquier ayuda sería apreciada.
Mostrando más código, específicamente todos los constructores de cada clase en este caso son importantes. (Algunos se pueden deducir de su código, pero ayuda a obtener más respuestas correctas de todos ...) – Macke
Hm. El código inicial tenía Base bp = & d. Ahora se ha cambiado a Base * bp = & d; – Macke
No es relevante para la pregunta, pero también querrás destructores virtuales en las clases. –