現在、Drawable と Transformable の 2 つのクラスがあり、Actors のようなものはこれらの両方を継承しています。問題は、オブジェクトを画面に描画するときに、Transformable に getPosition() 関数が含まれていない Drawables のベクトルを反復処理することです。仮想 getPosition() を Drawable に追加すると、これは解決されますが、別の場所で関数へのあいまいな呼び出しの問題が発生します。それでは、Drawable に Transformable を継承させ、Actor に Drawable を継承させて、両方のクラスを継承しているかのように同じ結果を得ることができますか?
編集: ドローアブルはすべてのアクターではなく、スプライト (ゲーム オブジェクト)、プリミティブ シェイプなどもあります。実際には、描画ループで getPosition() が必要な唯一の理由は、深さを偽造するためにベクターをループしてY 座標が 0 から画面の下部に移動すると、画面のより高い位置にあるオブジェクトが最初に描画され、次に「前面」に近いオブジェクトの背後に表示されます。Drawable/Transformable クラスは作成していません。1 つのインスタンスで 1 つの関数呼び出しを満たすために、それらを完全に変更する必要はありません。これが問題になるのは、Drawables のベクトルを参照するときだけです。ドローアブル クラスを使用するものはすべてトランスフォーマブル クラスも継承するため、このように設計された理由がよくわかりません。
私の質問は、これが次のとおりかどうかです。
class foo {}
class bar{}
class foobar : public foo, public bar {}
これと同じです
class foo {}
class bar : public foo {}
class foobar : public bar {}
オブジェクトは、親が継承するクラスの public および protected メンバーを継承できますか?