hola,
tengo este caso.
clasebase;
clasehija1 deriva de clasebase;
clasehija2 deriva de clasebase;
clasebase::escribe() { cout << "escribe_base"; }
clasehija1::escribe() { cout << "escribe_hija1"; }
clasehija2::escribe() { cout << "escribe_hija2"; }
Programita de uso:
--------------------------
clasebase objeto1;
objeto1 = new clasehija1();
objeto1->escribe();
--------------------------
Resultado: "escribe_base";
MI PROBLEMA: Tengo el objeto1 en el que quiero guardar objetos "hijos" de cualquier tipo.
Porque solo tengo esa variable objeto1, luego lo unico que se me ha ocurrido es crearla de tipo "base" para que pueda guardar cualquier hijo.
Es decir en el ejemplo anterior objeto1->escribe() -> yo queria que escribiese "escribe_hija1". pero parece que por herencia de c++, al ser objeto1 de tipo base pues ejecuta el metodo base, no el de la clase derivada.
Como puedo simular el comportamiento este que quiero? parece una situacion muy
normal lo que busco no? o no lo es tanto?
Se me ocurre esto, pero parece una marranada y no se si funciona
void *objeto1;
objeto1 = (clasehija1 *)new clasehija1();
((clasehija1 *)objeto1)->escribe();
Aiken
Marcadores