【问题标题】:c++ class object as an instance variable in obj-c classc++类对象作为obj-c类中的实例变量
【发布时间】:2011-04-06 06:48:49
【问题描述】:

我有一个 c++ 类 IPoint,并希望使用 IPoint 的实例作为 obj-c 类的实例变量。 但是在编译时它给了我错误:“'Ipoint'之前的预期说明符限定符列表” 但是我已经包含了所需的标题“IPoint.h”。

但是当我在我的类中使用 cpp 对象时,只是通过初始化它而不使它成为实例变量,它可以工作。

cpp 对象存储为实例变量有一个特定要求,因为它在我的项目中需要进一步,如果有办法让它像为对象编写包装器或其他任何东西一样工作。 请帮帮我!

【问题讨论】:

    标签: iphone c++ objective-c wrapper


    【解决方案1】:

    如果您希望能够将您的 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 创建和销毁它。

    【讨论】:

      【解决方案2】:

      具有 C++ 类 ivar 的 Objective-C 类的标头必须编译为 Objective-C++。确保在源代码文件名中使用 .mm 扩展名而不是 .m 扩展名,或者将文件设置为在 Xcode 中编译为 Objective-C++。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-16
        • 1970-01-01
        • 2017-04-16
        • 2011-05-07
        • 1970-01-01
        相关资源
        最近更新 更多