Eu gostaria de ter vários tipos que compartilham a mesma implementação, mas ainda são de tipos diferentes em C ++.
Para ilustrar minha pergunta com um exemplo simples, gostaria de ter uma aula de Maçãs, Laranjas e Bananas, todas com as mesmas operações e a mesma implementação. Eu gostaria que eles tivessem tipos diferentes, porque quero evitar erros graças à segurança de tipo.
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 não duplicar o código, parece que eu poderia usar uma classe base Fruit e herdar dela:
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 {};
Mas então, os construtores não são herdados e eu tenho que reescrevê-los.
Existe algum mecanismo (typedefs, modelos, herança ...) que me permitiria facilmente ter a mesma classe com tipos diferentes?