Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: digimikeh en 5 Octubre 2019, 04:44 am



Título: enums heredados ?
Publicado por: digimikeh en 5 Octubre 2019, 04:44 am
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:

Código:
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//
     }

}

Código:
class hija1 : public padre{

protected:
     enum mis_objetos override{
          obj0 = 0,
          obj1
     };

     void una_funcion(ms_objetos mo) override;
}


Código:
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.


Título: Re: enums heredados ?
Publicado por: ThunderCls en 16 Octubre 2019, 21:52 pm
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