C++;Xcode iOS项目错误 我正在做一个iOS项目,它有几个C++类。但似乎他们并不直截了当。我厌倦了不同的方法,但一直都有一些错误

C++;Xcode iOS项目错误 我正在做一个iOS项目,它有几个C++类。但似乎他们并不直截了当。我厌倦了不同的方法,但一直都有一些错误,c++,ios,objective-c++,C++,Ios,Objective C++,1) 首先我改名为.m;类并尝试编译,但它给出了一个错误。在这一行 SInt16 *editBuffer = audioBufferList->mBuffers[0].mDat; Error-“无法用'void*'类型的左值初始化'SInt16*'(又称'short*')类型的变量” 2) 将其他链接器标志设置为-ObjC++时,会出现以下两个错误。 未知类型名称“类”;你是说“课堂”吗 'deque' file not found - for #include<deque>

1) 首先我改名为.m;类并尝试编译,但它给出了一个错误。在这一行

SInt16 *editBuffer = audioBufferList->mBuffers[0].mDat;
Error-“无法用'void*'类型的左值初始化'SInt16*'(又称'short*')类型的变量”

2) 将其他链接器标志设置为-ObjC++时,会出现以下两个错误。 未知类型名称“类”;你是说“课堂”吗

'deque' file not found - for #include<deque>
未找到'deque'文件-对于#include

任何人都知道这里出了什么问题。提前感谢。

预计会出现第一个错误。C++对空洞指针很挑剔。
SInt16 *editBuffer = (SInt16 *)(audioBufferList->mBuffers[0].mDat);

SInt16*editBuffer=static_cast(audioBufferList->mBuffers[0].mDat);

请参阅。

链接器标志不会影响编译器。您是否尝试过为Objective-C++设置编译器选项?是的,它给出了错误号1。第一个错误是由于不符合类型。如果我关于CoreAudio的假设是正确的,audioBufferList->mBuffers[0]。mDat是缓冲区地址。在指针数学方面,指向同一缓冲区的SInt16*和void*类型的行为不同。您需要将void*强制转换为SInt16*,或者将editBuffer重新键入一个兼容的类型,例如void*或char*。非常感谢!给你答案
SInt16 *editBuffer = static_cast<SInt16 *>(audioBufferList->mBuffers[0].mDat);