我目前正在开发一个iOS开发项目。为方便起见,我在早期阶段将功能分成几个小程序。该项目包括Obj-C,Obj-C ++和C ++程序。现在我将它们放在最终产品中,并且在(我猜)Obj-C和C ++之间的兼容性方面遇到了一些奇怪的行为。
我正在尝试在obj-C ++程序中初始化一个对象,该程序来自obj-C类。但是在编译obj-C类头文件时我一直遇到错误:
#import <Foundation/Foundation.h>
@class AVAssetExportSession;
@interface LibraryImport : NSObject {
AVAssetExportSession * export; //Error line
NSError* movieFileErr;
}
//class methods
成绩单是这样的:
LibraryImport.h:24:错误:'export'之前的预期unqualified-id
LibraryImport.h:24:错误:实例变量'unnamed'的大小未知
LibraryImport.h:24:错误:预期`;'在'出口'之前
这个调用在obj-C ++文件中是这样的:(这里没有检测到错误,只觉得有些东西可能相关)
LibraryImport* import = [[LibraryImport alloc] init];
最奇怪的是,当它最初由一个纯粹的Obj-C程序调用时,它的工作原理非常好。但项目性质需要将调用者更改为obj-C ++。而且,当我尝试将obj-C文件更改为obj-C ++时,我得到的错误比以前更多,包括现有错误。
过去整整一周,这些问题一直让我头撞墙:
在这种情况下,我如何成功初始化此对象?
这个问题是否与obj-C和C ++之间的兼容性有关?如果是这样,是否有关于兼容性的一般解决方案或一些明确的解释?
如果需要更多信息,请告诉我(这是我第一次遇到这个问题,我甚至不知道从哪里开始......)。任何见解将不胜感激。非常感谢你: - )
干杯,
曼卡
答案 0 :(得分:10)
我不知道Obj-C ++,只是C ++。
有些编译器会将export
视为关键字,请尝试以不同方式命名变量。