Plantilla y herencia

Resuelto
Hola,

por favor, ¿en la herencia si la clase base se declara como plantilla
template<class T> NOMBRE DE LA CLASE, puede la clase derivada también utilizar el tipo genérico de la clase base, es decir, ¿podemos usar la palabra clave T en lugar del tipo en la clase derivada? Gracias por su futura respuesta :)

1 respuesta

  1. Moderador
    Cada vez que reemplazas tu plantilla por un tipo concreto, recompilas una nueva clase, que a su vez compilará su clase madre. Al final solo tendrás tipos concretos. Por lo tanto, no debería haber problema...

    template <typename T> class Mere { } template <typename T> class Fille : public Mere<T> { }

    --
    La confianza no excluye el control.
    0
    1. Entonces, ¿podemos decir que la clase hija hereda el tipo abstracto??? Y gracias por la respuesta.
      0
    2. Moderador
      No es abstracto más que en tu código, una vez realizada la compilación la clase es concreta, y no hay más ambigüedad que si hubieras hecho varias clases madre y varias clases hijas con solo el tipo de la plantilla que difiere.
      0
    3. OK, gracias, pero si quiero declarar la clase hija como genérica pero con otro tipo, es decir, no el de la clase madre, ¿qué haría?
      0
    4. Moderador
      Harías como si la clase madre no fuera un template...

      No estoy seguro de la sintaxis con dos templates, pero en principio estos dos códigos deberían tener más o menos el mismo sentido para la clase hija.

      class Madre {} template <typename T> class Hija : public Madre {} //------------ template <typename U> class Madre {} template <typename T,typename U> class Hija : public Madre<U> {}
      0
    5. Muchas gracias por ayudarme, y gracias por su tiempo, ahora lo he entendido bien :)
      0