gpt4 book ai didi

c++ - b2Body 的派生类或包含 b2Body 对象的类?

转载 作者:行者123 更新时间:2023-11-30 01:11:08 25 4
gpt4 key购买 nike

我目前有一个“WorldObject”类,它包含一个指向其 b2Body 的指针,以及几个方法和变量。

但是让 WorldObject 成为 b2Body 的派生类不是更聪明吗?

处理这类事情的一般方法是什么?始终创建类中最重要对象的派生类,还是只创建一个新对象并为所有对象添加属性?

这些可能性的优缺点是什么?

谢谢。

最佳答案

没有最好的办法。这完全取决于上下文:

  • 有一个指向b2Body 的指针实现了一种组合关系,即一个WorldObject 有一个b2Body

  • 使 WorldObject 派生自 b2Body 实现继承,并且只有当 WorldObjectb2Body< 时才应执行此操作。这意味着原则上您可以使用 WorldObject 对象执行您可以使用 b2Boby 执行的所有操作(以及更多)。

经验法则是选择 preferring composition over inheritance .除非你真的有明显的遗传。

在你的例子中,一个 b2Body是刚体。现在问你一个问题:你的对象是 body 吗?或者你的对象有一个 body ?

更实用:这种设计的好处是将Box2D引擎的选择封装在了你的WorldObject中。如果稍后您使用另一个 API 将软件移植到另一个物理引擎,这可以让您更好地控制影响。如果您改用继承,底层引擎 API 将显着影响您自己软件的设计,并且有一天很难迁移到另一个引擎。

关于c++ - b2Body 的派生类或包含 b2Body 对象的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com