Chciałbym mieć kilka typów, które mają tę samą implementację, ale nadal są różnego typu w C ++.
Aby zilustrować moje pytanie prostym przykładem, chciałbym mieć klasę jabłek, pomarańczy i bananów, wszystkie z tymi samymi operacjami i taką samą implementacją. Chciałbym, żeby były różne typy, ponieważ chcę uniknąć błędów dzięki bezpieczeństwu typów.
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 ...
Aby nie powielać kodu, wygląda na to, że mógłbym użyć klasy bazowej Fruit i dziedziczyć po niej:
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 {};
Ale wtedy konstruktorzy nie są dziedziczeni i muszę je przepisać.
Czy istnieje mechanizm (typy typów, szablony, dziedziczenie ...), który pozwoliłby mi łatwo mieć tę samą klasę z różnymi typami?