Unknown type name 'class'; did you mean 'Class'? 解决方案
来源:互联网 发布:数据分析统计表 编辑:程序博客网 时间:2024/06/05 14:38
有时我们需要在OC的程序中使用已有的C++类,这时,我们可以把OC类的.m文件后缀改为.mm,就可以在里面使用C++类了。但是二者直接混用会出现一些问题以致编译无法通过,这时可以简单的通过把target中的compile source as改为oc++就可以通过编译。这是一个简单的做法,但两个世界确实很不一样,如此这样的深度混合有时会变地很棘手。
但是如果使用默认compile类型就在引入C++类后很可能会出错,
错误通常是这样的:
Unknown type name 'class'; did you mean 'Class'?
因为class CppObject根本不是有效的Objective-C语法, 所以编译器就被搞糊涂了。正是因为Objective-C中没有class这个关键字. 所以要与Objective-C兼容,Objective-C++类的头文件必须仅包含Objective-C代码,绝对没有C++的代码 - 这主要是影响类型定义。
网上的文章已经提到一些解决方案.其中最好的一个是PIMPL,它也适用于现在的情况。这里还有一个适用于clang的新方法,可以将C++代码从Objective-C中隔开,这就是class extensions中ivars的。
PIMPL:网上可以找到相关文章,简单来说,就是把#import "CPPObject.h"改成@class CPPObject,就OK了。
这次我遇到的问题是在pch文件中解决的:
#ifdef __cplusplus
#import "NSUtil.h"
#import "UIUtil.h"
#import "SettingUtil.h"
#endif
0 0
- Unknown type name 'class'; did you mean 'Class'? 解决方案
- cocos2dx Unknown type name 'class'; did you mean 'Class'?问题解决!
- Unknown type name 'class'; did you mean 'Class'
- cocoa Unknown type name 'class'; did you mean 'Class'? 问题解决
- Unknown type name 'class'; did you mean 'Class'? 问题的解决
- cocoa Unknown type name 'class'; did you mean 'Class'? 问题的解决
- Unknown type name "CGRect",did you mean "Rect"?的解决方案
- Unknown type name "CGRect",did you mean "Rect"?的解决方案
- unknown type name''",did you mean""
- 【iOS开发-63】Unknown type name "CGRect",did you mean "Rect"?的解决方案
- Unknown type name "CGRect",did you mean "Rect"?
- unknown type name 'class' 的解决
- error: unknown type name 'class' 的解决方法
- error: unknown type name 'class' 的解决方法
- 关于报Unknown type name 'class'的问题解决
- Caused by: There is no result type defined for type 'json' mapped with name 'rebback'. Did you mean
- Caused by: There is no result type defined for type 'json' mapped with name 'success'. Did you mean
- Unknown type name "NSString"解决方案
- 【Debug】The value of ESP was not properly saved across a function call.
- python 正则表达式
- java中XML文档解析3 (sax和stax的使用)
- NetWork Science网络科学学习笔记(二)有权图、二分图、广度优先搜索
- c# 结构中的变量作用域
- Unknown type name 'class'; did you mean 'Class'? 解决方案
- Kerberos and SPNEGO
- 怎样压缩pdf 减少pdf文件的大小
- HDU1227 Fast Food(DP)
- 7.You have issued a SHUTDOWN ABORT command to bring down your database instance. Considerthe steps t
- ehcacge.xml
- git使用本地
- JAVA学习笔记 NO.1 环境配置
- 如何使用MediaPlayer播发res/raw下的音频文件