Test Foro de elhacker.net SMF 2.1

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:


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.
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