我有一个抽象Shape类,它有十个具体的子项(Point,Line,Triangle,Rectangle,Arc,Sector,Circle,Ellipse,Spline,Polygon)。我想在我的物理引擎中添加碰撞形状,但只允许使用Point,Rectangle和Circle。如果我能让它们起作用,也可能是Line和/或Triangle。
这可能没有使用重载方法(包括模板特化)吗?
答案 0 :(得分:5)
在这种情况下,您需要另一个类(或其他语言的接口),例如CollisionShape,其中Point,Rectangle和Circle派生自/ implement,而其他类则不然。它是源自CollisionShape的类,物理引擎可以接受,而不是Shape。