Vorrei avere diversi tipi che condividono la stessa implementazione ma sono ancora di tipo diverso in C ++.
Per illustrare la mia domanda con un semplice esempio, vorrei avere una classe per mele, arance e banane, tutte con le stesse operazioni e la stessa implementazione. Vorrei che avessero tipi diversi perché voglio evitare errori grazie alla sicurezza dei tipi.
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 ...
Per non duplicare il codice, sembra che potrei usare una classe base Fruit ed ereditarla da essa:
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 {};
Ma poi, i costruttori non vengono ereditati e devo riscriverli.
Esiste un meccanismo (typedef, modelli, ereditarietà ...) che mi consentirebbe di avere facilmente la stessa classe con tipi diversi?