Question

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!

Was it helpful?

Solution

Either

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

If you use id, you should introduce the type in your definitions, e.g.:

// 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++.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top