0

Objective-c クラスを CPP クラスにインスタンス化するにはどうすればよいですか?

たとえば、私の CPP クラス:

class Foo{
public:
    Foo();
private:
    MyObjcClass* myObjcClass; //it does not work
}

どうすればこれを行うことができますか?

私は、Objective-C には .m を、C++ には .cpp を使用していることに注意してください。

どうもありがとう!

4

2 に答える 2

3

また

  • Objective-C++としてコンパイルする
  • またはとして宣言しidます。

を使用する場合idは、定義にタイプを導入する必要があります。例:

// Foo.mm
Foo::~Foo() {
  MyObjcClass * a = this->myObjcClass;
  [a release];
}

一般に、型(MyObjcClass)を保持し、使用を避けるid必要がありますが、変数idをCおよびC ++と互換性があるものとして宣言するidことで、Foo.hppを含むすべてのものをObjC++としてコンパイルしないようにすることができます。

于 2012-11-07T19:17:57.627 に答える
1

これには 2 つの方法があります。正しい方法は、Objective-C++ を使用することです。.mm拡張子を持つファイルでこれを行うか、ビルド設定を変更することができます。デフォルトでは、ファイル拡張子に基づいてコンパイルされますが、.cppまたは.mファイルで Objective-C++ を強制的に使用することができます。

クレイジーな方法は、objc.h で生の Objective-C インターフェイスを使用することです。

于 2012-11-07T19:19:30.247 に答える