Search code examples
c++objective-cinstanceobjective-c++pimpl-idiom

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!


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