Во-первых, как Акару предложил в одном из своих комментариев: переименуйте все файлы реализации, импортированные в .mm (вся цепочка).
Другие возможности ошибок компиляции:
- Makeуверен, что вы не используете зарезервированные ключевые слова c ++ в качестве имен переменных.Пример: у меня была delete переменная в переименованном файле .m реализации.Мне пришлось изменить его на any_other_delete_varible_name в .mm файле.Скорее всего, имена переменных, такие как:
friend, delete, typeid
- самые большие подозреваемые; -)
Цитата из: http://cs.smu.ca/~porter/csc/ref/cpp_keywords.html:
Зарезервировано еще 30слова, которых не было в C, поэтому являются новыми для C ++ , и вот они:
asm dynamic_cast namespace reinterpret_cast try
bool explicit new static_cast typeid
catch false operator template typename
class friend private this using
const_cast inline public throw virtual
delete mutable protected true wchar_t
2.Компилятор C ++ более строг в отношении приведения типов (например: я получаю сообщение об ошибке при попытке назначить NSString для идентификатора типа и т. Д.). Используйте трюки, чтобы избежать этого, если есть переменная must:как id сам решил проблему.