Я хотів би мати декілька типів, які мають однакову реалізацію, але все ще мають різний тип в C ++.
Щоб проілюструвати своє запитання на простому прикладі, я хотів би мати клас для яблук, апельсинів та бананів, у яких однакові операції та однакова реалізація. Я хотів би, щоб вони мали різні типи, оскільки я хочу уникати помилок завдяки безпеці типу.
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 ...
Щоб не дублювати код, схоже, я міг би використовувати базовий клас Fruit і успадкувати від нього:
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 {};
Але тоді конструктори не успадковуються, і я повинен їх переписати.
Чи існує якийсь механізм (typedefs, шаблони, успадкування ...), який би дозволив мені легко мати той самий клас з різними типами?