我目前有一个“WorldObject”类,它包含一个指向其 b2Body 的指针,以及几个方法和变量。
但是让 WorldObject 成为 b2Body 的派生类不是更聪明吗?
处理这类事情的一般方法是什么?始终创建类中最重要对象的派生类,还是只创建一个新对象并为所有对象添加属性?
这些可能性的优缺点是什么?
谢谢。
最佳答案
没有最好的办法。这完全取决于上下文:
有一个指向
b2Body
的指针实现了一种组合关系,即一个WorldObject
有一个b2Body
。使
WorldObject
派生自b2Body
实现继承,并且只有当WorldObject
是b2Body< 时才应执行此操作
。这意味着原则上您可以使用WorldObject
对象执行您可以使用b2Boby
执行的所有操作(以及更多)。
经验法则是选择 preferring composition over inheritance .除非你真的有明显的遗传。
在你的例子中,一个 b2Body
是刚体。现在问你一个问题:你的对象是 body 吗?或者你的对象有一个 body ?
更实用:这种设计的好处是将Box2D引擎的选择封装在了你的WorldObject
中。如果稍后您使用另一个 API 将软件移植到另一个物理引擎,这可以让您更好地控制影响。如果您改用继承,底层引擎 API 将显着影响您自己软件的设计,并且有一天很难迁移到另一个引擎。
关于c++ - b2Body 的派生类或包含 b2Body 对象的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391678/