Objective-c クラスを CPP クラスにインスタンス化するにはどうすればよいですか?
たとえば、私の CPP クラス:
class Foo{
public:
Foo();
private:
MyObjcClass* myObjcClass; //it does not work
}
どうすればこれを行うことができますか?
私は、Objective-C には .m を、C++ には .cpp を使用していることに注意してください。
どうもありがとう!
Objective-c クラスを CPP クラスにインスタンス化するにはどうすればよいですか?
たとえば、私の CPP クラス:
class Foo{
public:
Foo();
private:
MyObjcClass* myObjcClass; //it does not work
}
どうすればこれを行うことができますか?
私は、Objective-C には .m を、C++ には .cpp を使用していることに注意してください。
どうもありがとう!
また
id
ます。を使用する場合id
は、定義にタイプを導入する必要があります。例:
// Foo.mm
Foo::~Foo() {
MyObjcClass * a = this->myObjcClass;
[a release];
}
一般に、型(MyObjcClass
)を保持し、使用を避けるid
必要がありますが、変数id
をCおよびC ++と互換性があるものとして宣言するid
ことで、Foo.hppを含むすべてのものをObjC++としてコンパイルしないようにすることができます。
これには 2 つの方法があります。正しい方法は、Objective-C++ を使用することです。.mm
拡張子を持つファイルでこれを行うか、ビルド設定を変更することができます。デフォルトでは、ファイル拡張子に基づいてコンパイルされますが、.cpp
または.m
ファイルで Objective-C++ を強制的に使用することができます。
クレイジーな方法は、objc.h で生の Objective-C インターフェイスを使用することです。