Ошибки проекта C++ Xcode iOS

Я работаю над проектом iOS, который представляет собой несколько классов С++. Но, как кажется, составить их не так просто. Я устал от разных методов, но все время выдают какие-то ошибки.

1) Сначала я переименовал .m;class в .mm и пытаюсь скомпилировать, но выдает ошибку. в этой строке

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

Error - "Cannot initialize a variable of type 'SInt16 *' (aka 'short *') with an lvalue of type 'void *'"

2) При установке для других флагов компоновщика значения -ObjC++ выдаются эти две ошибки. Неизвестное имя типа «класс»; ты хотел сказать "класс"?

'deque' file not found - for #include<deque>

У кого-нибудь есть идеи, что здесь не так. Заранее спасибо.


person Waruna    schedule 21.11.2012    source источник
comment
Флаги компоновщика не влияют на компилятор. Вы пытались установить параметр компилятора для Objective-C++?   -  person Jeffery Thomas    schedule 21.11.2012
comment
Да, выдает ошибку номер 1.   -  person Waruna    schedule 21.11.2012
comment
Первая ошибка связана с несовместимым типом. Если мое предположение об этом с участием CoreAudio верно, то audioBufferList->mBuffers[0].mDat является адресом буфера. Типы SInt16* и void*, указывающие на один и тот же буфер, не будут вести себя одинаково, когда речь идет о математике указателя. Вам нужно либо преобразовать void* в SInt16*, либо перепечатать editBuffer в совместимый тип, такой как void* или char*.   -  person CuriousRabbit    schedule 21.11.2012


Ответы (1)


Ожидается первая ошибка. C++ привередлив к указателям void.

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

or

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

См. раздел Передача в и из void*.

person Jeffery Thomas    schedule 21.11.2012
comment
Огромное спасибо! для вас ответ - person Waruna; 21.11.2012