【问题标题】:Restricting polymorphic arguments to a specific subset?将多态参数限制为特定子集?
【发布时间】:2012-08-17 17:23:10
【问题描述】:

我有一个抽象形状类,它有十个具体的子对象(点、线、三角形、矩形、弧、扇区、圆、椭圆、样条线、多边形)。我想将碰撞形状添加到我的物理引擎中,但只允许使用点、矩形和圆形。可能还有线和/或三角形,如果我能让它们工作的话。

如果不使用重载方法(包括模板特化),这是否可能?

【问题讨论】:

    标签: c++ polymorphism


    【解决方案1】:

    在这种情况下,您需要另一个类(或其他语言的接口),例如 CollisionShape,Point、Rectangle 和 Circle 派生自/实现,而其他类则不需要。物理引擎会接受从 CollisionShape 派生的类,而不是 Shape。

    【讨论】:

    • 我将具有所有 pure virtual 方法且没有状态的抽象类视为 c++ 的接口。天知道我已经向 Java 人解释了足够多的时间。但是,是的,这些选择类的派生接口以及 Shape 似乎是一个好的开始。
    猜你喜欢
    • 2021-02-08
    • 2012-05-06
    • 1970-01-01
    • 2017-08-10
    • 2021-12-07
    • 2015-08-23
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多