Как я могу использовать свои пользовательские типы (C ++) в проекте target-c с xcode? - PullRequest
0 голосов
/ 15 мая 2011

У меня есть несколько классов, которые я написал, чтобы иметь дело с числами, имеющими единицы прозрачно, как если бы они были просто целыми числами или числами с плавающей точкой. В двух словах:

SI_Term speed(4, "mph");
SI_Term distance(10000, "feet");
SI_Term time = distance / speed;
std::cout<<time.string();

и все основные операторы перегружены для работы таким образом. Потребовалось немало работы, поэтому я хотел бы использовать классы C ++ в своем приложении ObjC для iPhone. Я попытался добавить их с расширениями .h и .mm в свой проект xcode, но, похоже, они не рассматриваются как файлы C ++. (Я не найду ни одного из заголовков STL, синтаксических ошибок, где бы я ни объявил класс или что-нибудь).

Новая информация: Пробовал .mm и .h расширения, ошибки: в .h файле: namespace DA и почти все, что связано с кодом C ++ (около 40 ошибок всего этого сообщения), дает мне expected '=', ',', ';', 'asm' or '__attribute__' before ':' token

Я также получаю *: No such file or directory для всех экземпляров #include <*> в файлах c ++.

Я уверен, что это какое-то простое исправление, но .mm и .h было недостаточно.

Обновление: Обнаружил, что копирование и вставка исходного кода в новые файлы, кажется, работает. Файл mm (или файл cpp) компилируется. Однако файл h не работает, он выдает вышеупомянутую ошибку при любом появлении кода, специфичного для c ++.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Вы, вероятно, включаете (или импортируете) свой h-файл в один из своих .m-файлов. Их тоже нужно переименовать в .mm.

В конце концов вы, вероятно, назовете все .m fikes к .mm. И, кстати, файлы cpp, могут просто оставаться cpp. Нет причин переименовывать их.

1 голос
/ 15 мая 2011

Не зная точно, какие ошибки вы получаете, вместо добавления ваших файлов с расширением .hpp и .cpp в ваш проект, я бы изменил расширение заголовочных файлов на просто .h, а расширение на ваши файлы .cpp в .mm или .M, чтобы XCode распознал их как файлы Objective-C ++ и скомпилировал их соответствующим образом.

...