0

如何将 Objective-c 类实例化为 CPP 类?

例如我的 CPP 课程:

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

我怎么能这样做?

请注意,我将 .m 用于 Objective-C,将 .cpp 用于 C++。

非常感谢!

4

2 回答 2

3

任何一个

  • 编译为 Objective-C++
  • 或将其声明为id.

如果你使用id,你应该在你的定义中引入类型,例如:

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

通常,您应该保留类型 ( MyObjcClass) 并避免使用id,但将变量声明为id与 C 和 C++ 兼容,这样您就id可以避免将包含 Foo.hpp 的所有内容编译为 ObjC++。

于 2012-11-07T19:17:57.627 回答
1

有两种方法可以做到这一点。理智的方法是使用 Objective-C++。您可以使用具有.mm扩展名的文件执行此操作,也可以更改构建设置。默认是基于文件扩展名编译,但你可以强制它在一个.cpp.m文件上使用Objective-C++。

疯狂的方法是在 objc.h 中使用原始的 Objective-C 接口。

于 2012-11-07T19:19:30.247 回答