同じ実装を共有するいくつかの型が必要ですが、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 {};
しかし、コンストラクタは継承されず、書き直さなければなりません。
同じクラスを異なる型で簡単に持つことができるメカニズム (typedef、テンプレート、継承など) はありますか?