0

我想在objective-c头文件中声明一个类c++样式,但我得到一个错误“错误:预期'=',',',';','asm'或'__属性__'在'CPPClass'之前”

这是来自 .h 文件的代码。

class CPPClass;  
@interface OBJCClass : NSObject  
{  
    CPPClass* m_pCPPObject;  
}  
@end

如果我实现它的objective-c风格@class CPPClass,我在定义它时会出错,说它找不到接口声明。有没有这样做,否则,导入我的头文件和导入的c++头文件的所有objective-c类也必须是.mm文件。

附言。我已将 m 文件重命名为 mm。

4

2 回答 2

3

仅在编译 C++ 时声明 cpp 类。否则使用 typedef 无效:

#ifdef __cplusplus
class CPPClass;
#else
typedef void CPPClass;
#endif

这样,非 C++ 编译单元将实例变量视为 void 指针。由于所有指针的大小相同,因此实例变量的类型无关紧要。

于 2010-07-30T15:32:29.063 回答
1

将包含它的任何文件重命名为具有 .mm 扩展名。这将告诉编译器使用-ObjC++标志进行编译。

于 2010-07-30T15:01:48.393 回答