Me gustaría tener varios tipos que compartan la misma implementación pero que sigan siendo de diferente tipo en C ++.
Para ilustrar mi pregunta con un ejemplo simple, me gustaría tener una clase para Manzanas, Naranjas y Plátanos, todas con las mismas operaciones y la misma implementación. Me gustaría que tuvieran diferentes tipos porque quiero evitar errores gracias a la seguridad de tipos.
class Apple {
int p;
public:
Apple (int p) : p(p) {}
int price () const {return p;}
}
class Banana {
int p;
public:
Banana (int p) : p(p) {}
int price () const {return p;}
}
class Orange ...
Para no duplicar el código, parece que podría usar una clase base Fruit y heredar de ella:
class Fruit {
int p;
public:
Fruit (int p) : p(p) {}
int price () const {return p;}
}
class Apple: public Fruit {};
class Banana: public Fruit {};
class Orange: public Fruit {};
Pero entonces, los constructores no se heredan y tengo que reescribirlos.
¿Existe algún mecanismo (typedefs, templates, herencia ...) que me permita tener fácilmente la misma clase con diferentes tipos?