我有一个带有基本视图控制器类的项目,该项目由大约25个其他视图控制器继承。现在我需要在该基类中使用一些核心音频,所以我正在集成一个使用C ++的Audio类(改编自Apple的aurioTouch示例项目)。基类导入Audio类的头,然后初始化一个Audio对象,以便我可以调用Audio类中的方法。
当我编译时,我在Audio类中的'!='token'之前收到“expected'=',',',';','asm'或' attribute '之类的错误及其辅助类,因为编译器正在跳过C ++语法。如果我将基类的扩展名更改为.mm,我会得到相同的错误;我想我还必须更改从基类继承的所有类的扩展名。
有没有办法避免这种情况?换句话说,如何只编译最少量的文件作为C ++ - 理想情况下只是Audio类,Audio类和基类 - 而不更改项目的其余部分?
我问的原因是这一点音频大约是应用程序功能的0.5%,而且仅仅因为这一小小的添加而改变数十个文件以进行不同的编译似乎是错误的。
答案 0 :(得分:1)
实际上,将使用C ++功能的.m
文件重命名为.mm
应该足够了。您必须确保在类的头文件中不包含任何C ++标头,否则其他非C ++类将尝试包含您的类的头文件。