C++ を使用する必要があります。C++11 は興味深いですが、ない方がいいと思います。私は次のクラス構造を持っています。
class Wheel { /*...*/ };
class MtbWheel : public Wheel { /*...*/ };
class Bike { Wheel front_wheel; };
class Mountainbike : public Bike { MtbWheel front_wheel; };
これで完全に機能します。Mountainbike は front_wheel をオーバーライドするため、MtbWheel を使用できます。ソフトウェア技術的には、私は満足していません。
- 私が望むのは、front_wheel のオーバーライドを禁止するか、少なくともクラス Wheel を継承しないクラスによる上書きを制限することです。
- front_wheel をオーバーライドする代わりに、プロパティを「追加」したいだけです。
編集:仮想関数を使用せずにテンプレートを使用するソリューションはありますか?