Ich hätte gerne mehrere Typen, die dieselbe Implementierung verwenden, aber in C ++ immer noch vom unterschiedlichen Typ sind.
Um meine Frage anhand eines einfachen Beispiels zu veranschaulichen, hätte ich gerne eine Klasse für Äpfel, Orangen und Bananen, die alle die gleichen Operationen und die gleiche Implementierung haben. Ich möchte, dass sie unterschiedliche Typen haben, weil ich Fehler aufgrund der Typensicherheit vermeiden möchte.
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 ...
Um Code nicht zu duplizieren, könnte ich anscheinend eine Basisklasse Fruit verwenden und davon erben:
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 {};
Aber dann werden die Konstruktoren nicht geerbt und ich muss sie neu schreiben.
Gibt es einen Mechanismus (Typedefs, Vorlagen, Vererbung ...), mit dem ich problemlos dieselbe Klasse mit unterschiedlichen Typen haben kann?