私は C++ 開発者ではないので、Objective-C で b2ContactListener クラスを直接拡張できるかどうか、または b2ContactListener をラップする必要があるかどうかを知りたいです。
ありがとうございました。
私は C++ 開発者ではないので、Objective-C で b2ContactListener クラスを直接拡張できるかどうか、または b2ContactListener をラップする必要があるかどうかを知りたいです。
ありがとうございました。
Box2d を Cocoa で使用するには、Objective-C++ が必要です。. これは強力な言語であり、C++ を楽しく学べる方法です。
Objective-C++ の規則の 1 つは、Objective-C クラスは C++ クラスを拡張できない (逆もまた同様) ということです。そのため、継承ではなく合成 (つまりラップ) を使用する必要があります。. . ここで合成という用語を使用しているのは、「合成 vs 継承」が同じ結果を達成するための一般的な設計戦略であるためです。
あなたはそれを包む必要があります。C++ クラスを Objective-C または Obj-C++ クラスでサブクラス化する方法はありません。したがって、Objective-C++ でラッパーを作成するか、C++ クラスを作成してそれを拡張します。拡張子が .mm のファイルは、.m ではなく「Objective-C++」として Objective-C にコンパイルされることにも注意してください。