1

由于我不是 C++ 开发人员,我想知道是否可以直接使用 Objective-C 扩展 b2ContactListener 类,或者我是否必须包装 b2ContactListener。

谢谢你。

4

2 回答 2

0

将 box2d 与 Cocoa 一起使用需要 Objective-C++。. 这是一种强大的语言,也是学习 C++ 的有趣方式。

Objective-C++ 的规则之一是,Objective-C 类不能扩展 C++ 类(反之亦然),因此确实有必要使用组合而不是继承(换句话说,包装)。. . 我在这里使用术语组合,因为“组合与继承”是实现相同结果的常见设计策略。

于 2013-04-14T14:17:25.610 回答
0

你必须把它包起来。无法使用 Objective-C 或 Obj-C++ 类对 C++ 类进行子类化。所以要么在 Objective-C++ 中创建一个包装器,要么创建一个 C++ 类来扩展它。还应该注意的是,扩展名为 .mm 的文件将被编译为“Objective-C++”而不是 .m 到 Objective-C。

于 2013-04-14T23:08:03.293 回答