同時に 2 つの異なる動作を表すクラスを作成しようとしています。次のように:
class IMouse {
public:
virtual void Walk() const = 0;
};
class TSimpleMouse : public IMouse {
public:
void Walk() const;
};
class IBat {
public:
virtual void Fly() const = 0;
};
class TSimpleBat : public IBat {
public:
void Fly() const;
};
template <class TMouse, class TBat>
class TSuperCreatureImpl {
public:
void Do() const {
Walk();
Fly();
}
};
typedef TSuperCreatureImpl<TSimpleMouse, TSimpleBat> TSimpleSuperCreature;
さまざまな typedef を作成したいので、これはデフォルト (メソッド Do) による動作を持つことが重要です。とてもシンプルに思えます。
しかし、メソッド Fly と Walk にもパラメーター (速度など) を持たせたいと考えています。さまざまな生物に多くの typedef を使用できるようにするには、アーキテクチャをどのように変更すればよいですか?
Mouse と Bat のデフォルトのコンストラクターがない場合、アーキテクチャを変更するにはどうすればよいですか?
どうもありがとう。