简体   繁体   中英

Objective-C instance into C++ class

How I can instantiate a Objective-c class into CPP class?

for example my CPP class:

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

how I can do this?

note I using .m for Objective-C and .cpp for C++.

Thanks a lot!

Either

  • compile as Objective-C++
  • or declare it as id .

If you use id , you should introduce the type in your definitions, eg:

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

In general, you should preserve the type ( MyObjcClass ) and avoid using id , but declaring the variable as id is compatible with C and C++, so you can use id to avoid compiling everything that includes Foo.hpp as ObjC++.

There are two ways to do this. The sane way is to use Objective-C++. You can either do this with files that have a .mm extension or you can change your build settings. The default is to compile based on the file extension, but you can force it use Objective-C++ on a .cpp or .m file.

The crazy way is to use the raw Objective-C interface in objc.h.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM