这是我的问题。
我正在使用一个名为 Box2D 的物理库。我能够连接一个监听器,它会在 2 个灯具发生碰撞时告诉我。
本质上,Box2D 的工作方式是创建 b2Bodies。因此,我只知道发生碰撞的夹具属于哪个 b2Body。在我的游戏中,我有一个实体,从那里我有一个 PhisicsEntity。 PhysicsEntity 持有指向 b2Body 的指针。它还有一个来自 Entity 的 sendMessage 方法。问题是,如何从 b2Body 向 PhysicsEntity 发送碰撞消息。我想做的是将 b2Body 的 userData void* 设置为其对应的 PhysicsEntity。不过,必须强制转换 void* 来执行此操作似乎是非常错误的。
有没有更好的方法让我无需转换或查找即可快速了解与 b2Body 关联的物理实体?
谢谢
最佳答案
这正是 userData 字段之类的字段的目的 — 引用与库对象相关的应用程序数据。这是对 void *
的完全恰当的使用。
如果你问的是 C,我会说你也不必使用任何强制转换,因为转换为 void *
可以在没有任何强制转换和需要使用强制转换的情况下完成是可能出现问题的迹象,但如果我没记错的话,C++ 需要这些强制转换(我对 C++ 的使用还不足以确定)。
关于c++ - 帮助解决设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576643/