[英]c++ class object as an instance variable in obj-c class
我有一个c ++类IPoint,并且想将IPoint的实例用作obj-c类的实例变量。 但是,在编译时会出现错误:“'Ipoint'之前的预期specifier-qualifier-list”。但是,我已经包含了所需的标头,即“ IPoint.h”。
但是,当我在类中使用cpp对象时,只需初始化它而不使其成为实例变量,它就可以工作。
有一个特殊的要求,即cpp对象必须作为实例变量存储,因为在我的项目中还需要它,如果有一种方法可以使它工作,例如为该对象或其他对象编写包装器。 请帮助我!
如果您希望能够将Objective-C类接口#import到Objective-C和Objective-C ++代码中,则可以使用#ifdef将实例变量声明为void *(对于前者):
@interface MyClass : NSObject {
#ifdef __cplusplus
IPoint *point;
#else
void *point;
#endif
}
不幸的是,这确实意味着您需要手动管理C ++对象的生存期,分别在Objective-C ++的init和dealloc方法中使用new和delete创建和销毁它。
具有C ++类ivar的Objective-C类的标头必须编译为Objective-C ++。 确保在源代码文件名中使用.mm扩展名而不是.m扩展名,或将文件设置为在Xcode中编译为Objective-C ++。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.