Экземпляр Objective-C в класс C ++

Как я могу создать экземпляр класса Objective-C в классе CPP?

например мой класс CPP:

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

как я могу это сделать?

обратите внимание, я использовал .m для Objective-C и .cpp для C ++.

Большое спасибо!

0

Решение

Или

  • компилировать как Objective-C ++
  • или объявить это как id,

Если вы используете idВы должны ввести тип в свои определения, например:

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

В общем, вы должны сохранить тип (MyObjcClass) а также избежать с помощью id, но объявив переменную как id совместим с C и C ++, поэтому вы можете использовать id чтобы избежать компиляции всего, что включает в себя Foo.hpp как ObjC ++.

3

Другие решения

Есть два способа сделать это. Разумным способом является использование Objective-C ++. Вы можете сделать это с файлами, которые имеют .mm расширение или вы можете изменить настройки сборки. По умолчанию компиляция основана на расширении файла, но вы можете принудительно использовать Objective-C ++ на .cpp или же .m файл.

Сумасшедший способ — использовать необработанный интерфейс Objective-C в objc.h.

1

По вопросам рекламы [email protected]