私の問題にポリモーフィズムを使用するかどうかを決定しようとしています。以下は、この質問のために作成した私の問題に似たダミーの問題です。
派生クラス Rectangle、Triangle、および Circle を持つ基本クラス Shape があるとします。それらのすべてに Area() 関数が実装されています。形状の n 個のベクトルがあります。vector<Shape*> v_1, v_2, v_3, ..., v_n
. 私が望む出力は、それが長方形の場合にのみvector<Rectangle*> maxrec
、それぞれに最大面積の形状を格納することです。v_1, v_2, ..., v_n
(たとえば、Shape の最大領域v_i
が Rectangle の場合、それを maxrec に追加します。そうでない場合は追加しません。)
入力がであるため、要素をに追加する前に要素を要素vector<Shape*>
にキャストすることは許容されますか? または、ここで見逃している設計上の欠陥はありますか? ポリモーフィズムは適切ですか?(アルゴリズムの部分には問題はありません。ポリモーフィズムの設計部分だけです。)Shape*
Rectangle*
maxrec