Buenas noches:
De la misma forma que se puede virtualizar una función y sobreemontarla en alguna clase hija... me pregunto si es posible hacer lo mismo con los enums....
por ejemplo:
class padre{
protected:
virtual enum mis_objetos{ //virtual aqui?
objPrincipal = 99
};
virtual void una_funcion(mis_objetos mo){
//hacer algunas cosas previas que sirven para todas las subclases//
}
}
class hija1 : public padre{
protected:
enum mis_objetos override{
obj0 = 0,
obj1
};
void una_funcion(ms_objetos mo) override;
}
class hija2 : public padre{
protected:
enum mis_objetos override{
obj50 = 3,
obj55
};
void una_funcion(ms_objetos mo) override;
}
Como verán, cada clase tiene sus propios elementos enum, sin embargo, para que la función una_funcion(mis_objetos) pueda sobremontarse, es necesario que el enum exista en el padre..
Es posible hacer esto? (con el codigo estoy especulando, lo mas seguro que tenga errores)
Gracias.
Segun tengo entendido los tipos de datos enum no soportan herencia/polimorfismo, al menos en C++. Lo que se me ocurre es que definas ambos enums (clase base/clase especializada) y accedas a ellos con el scope resolution operator :: segun necesites una version o la otra
padre::mis_objetos
hija1::mis_objetos