Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 我如何使用一些C++;没有将每个文件编译为C++;?_Iphone_C++_Ios_Xcode_Compiler Construction - Fatal编程技术网

Iphone 我如何使用一些C++;没有将每个文件编译为C++;?

Iphone 我如何使用一些C++;没有将每个文件编译为C++;?,iphone,c++,ios,xcode,compiler-construction,Iphone,C++,Ios,Xcode,Compiler Construction,我有一个带有基本视图控制器类的项目,该类由大约25个其他视图控制器继承。现在我需要在基类中使用一点核心音频,所以我正在集成一个音频类(改编自苹果的AurioouCH示例项目),使用C++。基类导入Audio类的头,然后初始化Audio对象,以便调用Audio类中的方法 >编译时,在“音频”类及其助手类中,由于编译器跳过C++语法,所以在“音频类”及其助手类中,会得到诸如“预期”=“,”,“,”,“,”,“ASM”或“它实际上应该足以重命名使用C++功能的 .m>代码>文件> mm >代码>。您

我有一个带有基本视图控制器类的项目,该类由大约25个其他视图控制器继承。现在我需要在基类中使用一点核心音频,所以我正在集成一个音频类(改编自苹果的AurioouCH示例项目),使用C++。基类导入Audio类的头,然后初始化Audio对象,以便调用Audio类中的方法

<> >编译时,在“音频”类及其助手类中,由于编译器跳过C++语法,所以在“音频类”及其助手类中,会得到诸如“预期”=“,”,“,”,“,”,“ASM”或“<强”属性“前”!=“令牌”等错误。如果我将基类的扩展名改为.mm,我会得到相同的错误;我想我还必须更改从基类继承的所有类的扩展

有没有办法避免这种情况?换句话说,我怎样才能编译最小数量的文件作为C++——理想地只是音频类,或者音频类和基类——而不改变项目的其余部分?
我之所以问这个音频是因为这个应用程序的功能大约是5%,而仅仅因为一个小的添加就改变了几十个文件的编译似乎是错误的。

< P>它实际上应该足以重命名使用C++功能的<代码> .m>代码>文件> mm >代码>。您必须确保在类的头文件中不包括任何C++头,否则其他非C++类将疯狂地尝试包含类的头文件。 好的,我正在从基类的头导入音频类。。。我只是添加了一个转发声明,并将导入移动到基类的实现文件中。那是你推荐的吗?这似乎解决了这个问题——但它引发了一些不同的错误,这些错误现在随着编译语言的变化而出现——所以我现在就开始处理这些问题,然后看看我是否可以编译。错误现在只出现在基类中,所以我认为我走在了正确的轨道上。这正朝着正确的方向发展。但是,简单的向前声明是行不通的,因为它是另一个文件无法理解的C++代码。所以剩下的唯一可能就是有一个指向类的指针,它的类型是普通C可以接受的。如果我没记错的话,我通过创建一些匿名结构转发声明解决了这个问题,并在标题中使用了它:
struct MyClass*myClassPointer。也许这会有帮助?实际上,在基类的头中提出一个前向声明,并在基类的实现文件中导入Audio类的头,效果很好。由于C++的编译规则略有不同,我不得不修复一些其他错误,但是现在所有的东西都在编译和运行。另一个替代方案是为C++类创建C包装器类吗?稍后我将对此进行探讨,但这对现在来说是好的。谢谢