如何将Objective-c类实例化为CPP类?
例如我的CPP课程:
class Foo{
public:
Foo();
private:
MyObjcClass* myObjcClass; //it does not work
}
我该怎么做?
注意我使用.m作为Objective-C,使用.cpp作为C ++。
非常感谢!
答案 0 :(得分:3)
无论
id
。如果您使用id
,则应在定义中引入类型,例如:
// Foo.mm
Foo::~Foo() {
MyObjcClass * a = this->myObjcClass;
[a release];
}
通常,您应该使用MyObjcClass
保留类型(id
)和避免,但将变量声明为id
与C和C ++兼容,因此您可以使用id
来避免将包含Foo.hpp的所有内容编译为ObjC ++。
答案 1 :(得分:1)
有两种方法可以做到这一点。理智的方法是使用Objective-C ++。您可以使用扩展名为.mm
的文件执行此操作,也可以更改构建设置。默认是基于文件扩展名进行编译,但您可以强制它在.cpp
或.m
文件上使用Objective-C ++。
疯狂的方法是在objc.h中使用原始的Objective-C接口。