我想在objective-c标头中声明一个类c ++样式,但我收到错误“error:expected'=',',',';','asm'或'__ attribute __'之前' CPPClass'“
以下是.h文件中的代码。
class CPPClass;
@interface OBJCClass : NSObject
{
CPPClass* m_pCPPObject;
}
@end
如果我实现了objective-c style @class CPPClass
我在定义时遇到错误,说它无法找到接口声明。无论如何这样做,否则,所有使用导入的c ++头导入我的头文件的objective-c类也必须是.mm文件。
PS。我已经将m文件重命名为mm。
答案 0 :(得分:3)
仅在编译C ++时声明cpp类。否则使用typedef来取消:
#ifdef __cplusplus
class CPPClass;
#else
typedef void CPPClass;
#endif
这样,非C ++编译单元将实例变量视为void指针。由于所有指针的大小都相同,因此实例变量的类型无关紧要。
答案 1 :(得分:1)
将包含它的任何文件重命名为.mm扩展名。这将告诉编译器使用-ObjC++
标志进行编译。