Creacion de Objetos

Arcontus
21 de Marzo del 2006
Tengo un problema en la creacion de objetos heredados. Les pondre un ejemplo sencillo, imaginen que tengo los siguientes objetos:
class persona{...}
class hombre:public persona{...}
class mujer:public persona{...}

bien, pues yo ahora desde el main, deseo crear un objeto sexo de tipo hombre o mujer, segun los datos introducidos. El caso es que lo he estado probando y no me funciona, ya que cuando defino sexo, aun no se si va a ser hombre o mujer, por lo que no se como continuar.

A ver si me pueden hechar una mano, gracias.

hiei
21 de Marzo del 2006
En el main pon:

Persona *sexo;
if ( tiene_que_ser_hombre )
sexo = new Hombre(...);
else if ( tiene_que_ser_mujer )
sexo = new Mujer(...):
else
puts( "Este programa no soporta ermaforditas autosuficientes o insuficientes ni homosexuales ni lesbianas" );
...Sige usando el objeto apuntado por sexo del tipo hombre o mujer (se supone que tiene metodos comunes)...

Si quieres saber si es hombre o mujer (desde la clase) haz ua funcion virtual (pura) en persona de esta forma:
virtual int soyMacho() = 0;
Y en la clase Hombre implementala asi:
virtual int soyMacho() { return 1; }
Se supone que en la clase mujer la implementaraz asi:
virtual int soyMacho() { return 0; }
Y para saber si es hombre o mujer usa:
if ( sexo->soyMacho() ) {
((Hombre*)sexo)->... // Se usa como una clase Hombre
} else {
((Mujer*)sexo)->... // Se usa como una clase Mujer
}
Bien... mejor corto aqui porque voy a poner cualquier cosa.... }X-DDDDDDDDDD