私は仮想クラスの車を持っています。 このクラスには異なるChildクラスがあります。私のインターフェイスで基本クラスC++の子クラスのための共通のデザインインタフェース
、私持っている機能
ride(std::string type = "mercedes")
機能は、パラメータの型を取り、これに基づいて、それはインスタンス化と乗り心地を実行している車、決定します。 if-elseループの前に車をインスタンス化してからちょうど適切なタイプを割り当てる方法だろう
ride(std::string type = "mercedes")
{
if(type =="btw")
{
auto car = std::make_shared<BMW>();
car.ride();
}
else if(type =="audi")
{
auto car = std::make_shared<Audi>();
car.ride();
}
default
{
auto car = std::make_shared<Mercedes >();
car.ride();
}
}
何: 現在、私は次のような何か?
多くの感謝!
導出インスタンスを作成するには、 'ride'関数の責任ではありません。これは工場のためのものです。文字列を特定のCarインスタンスに変換することは単一の責任です。 – chris
そこには各メーカーのために「カー」から派生しているのは馬鹿馬鹿しいようです。私は 'Car'クラスを持っていて、そのmakeとモデルを' std :: string'データメンバとして保存させます。 – NathanOliver