在iPhone应用程序中使用C ++ struct

时间:2010-12-09 18:07:03

标签: iphone c++ objective-c constructor struct

我听说可以在iPhone(Objective C)项目中使用C ++ Code,我想使用一个用C ++编写的加密库。但是,该库使用的是使用构造函数的C ++类型结构,我无法正确使用它。

Struct看起来像这样:

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 ++代码的文章,但这并没有多大帮助。

2 个答案:

答案 0 :(得分:6)

这绝对是可能的,并且技巧非常简单:当您要在Objective-C ++应用程序中使用C ++代码时,请将文件命名为 .mm 而不是<强> .M

因此,如果您有YourViewController.hYourViewController.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); 
}

答案 1 :(得分:3)

只需将.m文件的文件扩展名更改为.mm并包含C ++标头即可。哇,我打字太慢了,哈哈。