与えられた3つのクラス。C++多型と特定のメソッド
class vehicle{
public:
void start();
}
class airplane: public vehicle{
void start();
void setRoute(route r);
void setAltitude(altitude a);
}
class boat: public vehicle{
void start();
void setRoute(route r);
}
は、我々は飛行機や船を管理する場合は、私たちは理解してみましょう、コマンドラインでパラメータを受け取ったと仮定します。
Vehicle* v;
if (parameter == 1) {
v = new airplane();
v->setRoute(r);
v->setALtitude(a);
}
if (parameter != 1) {
v = new boat();
v->setRoute(r);
}
v->start();
開始前にボートと飛行機に異なるメソッドが呼び出されることに注意してください。 (Startは唯一の一般的な方法です) vにはsetRoute/SetALtitudeメソッドが含まれていないため、このコードは機能しません。
このパターンを実装する正しい方法は何ですか?
申し訳ありませんが、 ''書く場合代わりに(パラメータ== 1) '場合(パラメータ= 1) '...私は' route'の高度の部分を作るために誘惑されることになる。この例では – ilotXXI
。それ以外の能力を持っていれば、 'class flyable'や' class sailable'のような別個のインターフェースを与えることができるので、プレーンは 'class airplane:public vehicle、public flyable {}'と 'class boat:public vehicle、 public sailable {} '... – Galik
しかし、別個のインターフェースで多型を使用することはできません。 – Franconet