Ich möchte mehrere Typen haben, die die gleiche Implementierung teilen, aber immer noch von verschiedenen Typen in C++ sind.So definieren Sie verschiedene Typen für die gleiche Klasse in C++
Um meine Frage mit einem einfachen Beispiel zu illustrieren, hätte ich gerne eine Klasse für Äpfel, Orangen und Bananen, die alle dieselben Operationen und dieselbe Implementierung haben. Ich möchte, dass sie verschiedene Typen haben, weil ich Fehler vermeiden möchte, dank der Typ-Sicherheit.
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 nicht Code zu duplizieren, es sieht aus wie ich eine Basisklasse Obst verwenden könnte und erben von ihm:
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 Konstrukteure nicht geerbt, und ich habe sie neu zu schreiben.
Gibt es einen Mechanismus (typedefs, templates, Vererbung ...), der es mir erlauben würde, die gleiche Klasse mit verschiedenen Typen zu haben?
Können Sie genauer erklären, warum würden Sie das brauchen? Ich kann mir keine gute Idee einfallen lassen. Wenn die Klassen die Implementierung teilen, bedeutet das nicht, dass sie auch die Funktionalität teilen? – jnovacho
Ja, aber da sie unterschiedliche Typen haben, können einige Programmierfehler zum Zeitpunkt der Kompilierung entdeckt werden (zum Beispiel Apple und Orange zusammenführen). – anumi