我有一个主要使用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 ++类型吗?您是否需要做一些特殊的事情来包含其他类型的标题?
答案 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];
}