Typedef для STL Vector не компилируется в XCode - PullRequest
0 голосов
/ 04 ноября 2010

У меня есть код, написанный на C ++, который я хотел бы использовать в своем приложении для iPhone.Я добавил исходные файлы в проект XCode, но у меня возникли проблемы с некоторыми частями исходного кода, например, он имеет следующий код:

#import <vector>
// (...) some other code
typedef std::vector<keypoint> keypointslist;
// (...) rest of the code

В строке с typedef, который я получаю:

Ожидаемый атрибут '=', ',', ';', 'asm' или ' ' before ':' в

Точноэтот же код был скомпилирован с помощью gcc на Linux-машине, поэтому мне интересно, почему у XCode с ним проблемы.

Есть предложения?

Ответы [ 6 ]

2 голосов
/ 04 ноября 2010

Вы уверены, что сказали XCode компилировать файл как C ++, а не как C или Objective-C? Может быть, вы должны использовать расширение файла ".cpp".

1 голос
/ 24 января 2011

Если вы включаете код C ++ в файл «.m», вы должны переименовать расширение в «.mm» или «.M».это применимо, даже если вы ссылаетесь на класс C ++ из целевого класса C, файл должен быть переименован.Иногда это переименование имеет эффект домино, и в результате вы получаете много файлов ".mm" в вашем проекте.

1 голос
/ 04 ноября 2010

+ 1 с Ludger,

вы добавляете это в целевое приложение c, вам нужно добавить модуль перевода .cp / .mm / .cpp в проект, чтобы его компилировать - правильнонажмите на классы проекта выберите добавить класс, убедитесь, что вы добавили один из раздела cpp.

1 голос
/ 04 ноября 2010

Это называется #include, а не #import:

#include <vector>
0 голосов
/ 29 апреля 2011

Вы должны переименовать ВСЕ файлы, которые используют код C ++ с расширением .mm.

Сюда входят файлы вашего контроллера представления, которые могут импортировать класс C ++. например. MyViewController.mm

0 голосов
/ 04 ноября 2010

Убедитесь, что вы включили <vector> файл заголовка перед typedef. Похоже, компилятор не знает std пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...