J'aimerais avoir plusieurs types qui partagent la même implémentation mais qui sont toujours de type différent en C++.
Pour illustrer ma question par un exemple simple, j'aimerais avoir une classe pour les pommes, les oranges et les bananes, toutes ayant les mêmes opérations et la même implémentation. J'aimerais qu'elles aient des types différents car je veux éviter les erreurs grâce à la sécurité des types.
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 ...
Afin de ne pas dupliquer le code, il semble que je puisse utiliser une classe de base Fruit et en hériter :
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 {};
Mais alors, les constructeurs ne sont pas hérités et je dois les réécrire.
Existe-t-il un mécanisme (typedefs, templates, héritage...) qui me permettrait d'avoir facilement la même classe avec des types différents ?