繁体   English   中英

c ++类对象作为obj-c类中的实例变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM