Я так понимаю, вы используете и C ++, и Objective-C.
Я бы предложил переименовать все файлы .cpp
и .m
, в которых встречаются коды Objective-C и C ++, для использования расширения .mm
- это говорит компилятору использовать правила "Objective-C ++", и остановит много проблем с компилятором.
Кроме того, кажется, CAStreamBasicDescritpion
- это класс C ++ - вам придется объявить его вперед с class CAStreamBasicDescritpion;
, , а не @class CAStreamBasicDescritpion;
(обратите внимание, без знака "at") - Вторая форма предназначена только для деклараций Objective-C . Я подозреваю, что это является основной причиной конкретной ошибки, которую вы наблюдали.
РЕДАКТИРОВАТЬ в ответ на комментарий: я не уверен насчет вашей первой новой проблемы - она должна работать нормально, если FFTBufferManager
и CAStreamBasicDescription
являются классами C ++. Что касается вашего второго, в зависимости от того, где именно находится эта строка кода (CAStreamBasicDescription thruFormat;
), вам может потребоваться включить заголовок, а не просто предвидение: вы объявляете здесь экземпляр CAStreamBasicDescription
и компилятор для этого нужно знать его структуру.