enums heredados ?

Iniciado por digimikeh, 5 Octubre 2019, 04:44 AM

0 Miembros y 1 Visitante están viendo este tema.

digimikeh

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.
Dungeons & dragons;
dragons.Attack();

ThunderCls

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
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/