包括Objective C ++ Type in C ++ Class Definition

时间:2009-07-03 20:46:25

标签: c++ iphone cocoa objective-c++

我有一个主要使用C ++的项目,但我正在尝试在Objective-C ++库中进行链接。我的标题看起来像:

CPlus.h:

#import "OBJCObject.h"

class CPlus {
  OBJCObject *someObj;

};

CPlus.mm:

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

当我将Objective-C ++标头导入我的代码时,我最终会在iPhone SDK中发现数以千计的错误。似乎有些东西将一种语言视为另一种语言。对不起,如果这个描述不好,我是新手,我有点困惑。

你能在C ++类中包含Objective-C / Objective-C ++类型吗?您是否需要做一些特殊的事情来包含其他类型的标题?

2 个答案:

答案 0 :(得分:3)

您是否从Objective-C(.m)文件#import CPlus.h?如果是这样,它将无法理解C ++类,因为它是使用C语义编译的,并且不是Objective-C ++感知的。 .m编译器将看到class,但不知道该怎么做。

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

答案 1 :(得分:0)

使用IPhone SDK进行以下构建。确保声明c ++构造函数,并在.mm文件中实现它。

OBJCObject.h

#import <Foundation/Foundation.h>

@interface OBJCObject : NSObject {
}

@end

OBJCObject.m

#import "OBJCObject.h"

@implementation OBJCObject

@end

CPlus.h

#import "OBJCObject.h"

class CPlus {
    OBJCObject *someObj;
    CPlus();
};

CPlus.mm

#include "CPlus.h"

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