1

私は C++ 開発者ではないので、Objective-C で b2ContactListener クラスを直接拡張できるかどうか、または b2ContactListener をラップする必要があるかどうかを知りたいです。

ありがとうございました。

4

2 に答える 2

0

Box2d を Cocoa で使用するには、Objective-C++ が必要です。. これは強力な言語であり、C++ を楽しく学べる方法です。

Objective-C++ の規則の 1 つは、Objective-C クラスは C++ クラスを拡張できない (逆もまた同様) ということです。そのため、継承ではなく合成 (つまりラップ) を使用する必要があります。. . ここで合成という用語を使用しているのは、「合成 vs 継承」が同じ結果を達成するための一般的な設計戦略であるためです。

于 2013-04-14T14:17:25.610 に答える
0

あなたはそれを包む必要があります。C++ クラスを Objective-C または Obj-C++ クラスでサブクラス化する方法はありません。したがって、Objective-C++ でラッパーを作成するか、C++ クラスを作成してそれを拡張します。拡張子が .mm のファイルは、.m ではなく「Objective-C++」として Objective-C にコンパイルされることにも注意してください。

于 2013-04-14T23:08:03.293 に答える