acabo trató esta pieza de código:La herencia múltiple: 2Classes1Method
struct FaceOfPast
{
virtual void Smile() = 0;
};
struct FaceOfFuture
{
virtual void Smile() = 0;
};
struct Janus : public FaceOfPast, public FaceOfFuture
{
virtual void Smile() {printf(":) ");}
};
...
void main()
{
Janus* j = new Janus();
FaceOfFuture* future = j;
FaceOfPast* past = j;
future->Smile();
past->Smile();
delete j;
}
Funciona como destinados salidas (dos caras sonrientes), pero no lo hacen Creo que incluso debería compilar, la redeclaración de Smile()
en Janus
es ambigua.
¿Cómo (y por qué) funciona?
La pregunta no parece ser sobre la parte llamante, sino la parte redefinitiva: ¿por qué puedes redefinir 2 métodos virtuales con el mismo nombre de 2 clases diferentes escribiendo solo un método? – alexisdm