我正在尝试决定是否对我的问题使用多态性。下面是一个类似于我为这个问题而创建的问题的虚拟问题:
假设我有一个派生类 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
(例如,如果最大面积Shapev_i
是一个Rectangle,我把它加到maxrec。如果不是,我不加。)
由于输入是vector<Shape*>
,在将元素添加到之前将Shape*
元素转换为元素是否可以接受?还是我在这里遗漏了设计缺陷?多态性合适吗?(我对算法部分没有问题,只是多态设计部分。)Rectangle*
maxrec