Использование структуры C ++ с приложением для iPhone - PullRequest
3 голосов
/ 09 декабря 2010

Как я слышал, можно использовать код C ++ в проекте iPhone (Objective C), я хочу использовать библиотеку шифрования, написанную на C ++.Тем не менее, библиотека использует структуру типа C ++, которая использует конструктор, что я не могу понять правильно.

Структура выглядит следующим образом:

struct SBlock
{
 //Constructors
 SBlock(unsigned int l=0, unsigned int r=0) : m_uil(l), m_uir(r) {}
 //Copy Constructor
 SBlock(const SBlock& roBlock) : m_uil(roBlock.m_uil), m_uir(roBlock.m_uir) {}
 SBlock& operator^=(SBlock& b) { m_uil ^= b.m_uil; m_uir ^= b.m_uir; return *this; }
 unsigned int m_uil, m_uir;
};

полный исходный код доступен здесь: http://www.codeproject.com/KB/security/blowfish.aspx

Какой самый простой способ обойти эту проблему?Я читал статью об использовании кода c ++ на сайте разработчиков Apple, но это не сильно помогло.

Ответы [ 2 ]

6 голосов
/ 09 декабря 2010

Это определенно возможно, и уловка чрезвычайно проста : когда вы собираетесь использовать код C ++ в своих приложениях Objective-C ++, назовите ваши файлы .mm вместо .m .

Так что, если у вас есть YourViewController.h и YourViewController.m, переименуйте последнее в YourViewController.mm.Это заставит XCODE использовать компилятор C ++ вместо компилятора C с вашим кодом Objective C ++.

YourViewController.mm:

- (void) yourMessage {
    // will compile just fine and call the appropriate C++ constructor
    SBlock sb(1,1); 
}
3 голосов
/ 09 декабря 2010

Просто измените расширение имени файла .m на .mm и включите заголовки C ++.Вау, я печатаю слишком медленно, смеется.

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