代码之家  ›  专栏  ›  技术社区  ›  Adam

在C++类定义中包含目标C++类型

  •  1
  • Adam  · 技术社区  · 17 年前

    我有一个主要是C++的项目,但是我尝试链接到ObjuleC++库中。我有一个标题看起来像:

    CPL.H:

    #import "OBJCObject.h"
    
    class CPlus {
      OBJCObject *someObj;
    
    };
    

    CPlus.mm:

    CPlus::CPlus() {
      someObj = [[OBJCObject alloc] init];
    }
    

    当我将Objective-C++头文件导入到代码中时,最终会在iPhone SDK中出现数千个错误。似乎有什么东西把一种语言当作另一种语言对待。对不起,如果这个描述不好,我是新来的,有点困惑。

    你可以在C++类中包含ObjuleC/ObjuleC++类型吗?是否需要做一些特殊的事情来包括其他类型的头?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Jason    17 年前

    你是吗 #import 从Objective-C(.m)文件获取cplus.h?如果是这样,它将不理解C++类,因为它是用C语义编译的,而不是Objul-C++感知的。.m编译器将看到 class 不知道该怎么做。

    你可以在C++类定义中包含ObjtoE-C对象,反之亦然,只要源文件是.mm。

        2
  •  0
  •   Oren Trutner    17 年前

    以下版本适用于iPhone SDK。确保声明C++构造函数,并在.mm文件中实现它。

    Objbjbj.h

    #import <Foundation/Foundation.h>
    
    @interface OBJCObject : NSObject {
    }
    
    @end
    

    对象代码M

    #import "OBJCObject.h"
    
    @implementation OBJCObject
    
    @end
    

    CPL.H

    #import "OBJCObject.h"
    
    class CPlus {
        OBJCObject *someObj;
        CPlus();
    };
    

    CPLUS

    #include "CPlus.h"
    
    CPlus::CPlus() {
        someObj = [[OBJCObject alloc] init];
    }