限制特定子集的多态参数?

时间:2012-08-17 17:23:10

标签: c++ polymorphism

我有一个抽象Shape类,它有十个具体的子项(Point,Line,Triangle,Rectangle,Arc,Sector,Circle,Ellipse,Spline,Polygon)。我想在我的物理引擎中添加碰撞形状,但只允许使用Point,Rectangle和Circle。如果我能让它们起作用,也可能是Line和/或Triangle。

这可能没有使用重载方法(包括模板特化)吗?

1 个答案:

答案 0 :(得分:5)

在这种情况下,您需要另一个类(或其他语言的接口),例如CollisionShape,其中Point,Rectangle和Circle派生自/ implement,而其他类则不然。它是源自CollisionShape的类,物理引擎可以接受,而不是Shape。