C ++では、基本クラスの代わりに関数/メソッドに派生クラスを渡し、派生クラスに関する情報をまだ持っていますか?. 例: 基本クラス: "geometry" と他のクラス: "shape" フォームがあり、"rectangle" と "circle" を派生させているとします。
double area::geometry( shape& object, int i )
{
if i = 1:
rectangle thisObject = object;
double side1 = thisObject.getheight();
double side2 = thisObject.getwidth();
if i = 2:
circle thisObject = object;
double side1 = thisObject.radius * thisObject.radius;
double side2 = 3.14;
return side1 * side2;
}
問題は、"return side1 * side2" が非常に複雑なコードであり、繰り返したくないということです。そのため、オーバーロードするよりも、関数への入力の種類に応じて問題を設定することを好みます。
考え方はこれと非常によく似ています:基本クラスをパラメータとして取る関数への参照によって派生クラスを渡すことは可能ですか? ありがとう!
編集:コードをより明確にしようとしました。