如何在带有xcode的objective-c项目中使用我的自定义类型(C ++)?

时间:2011-05-15 01:38:09

标签: c++ objective-c xcode linker objective-c++

我写了几个类来处理具有透明单位的数字,就好像它们只是整数或浮点数一样。简而言之:

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

并且所有主要运营商都过载以这种方式工作。做了相当多的工作,所以我想在我的ObjC iPhone应用程序中使用C ++类。我尝试将.h和.mm扩展名添加到我的xcode项目中,但似乎并没有将它们视为C ++文件。 (在我声明类或任何东西的任何地方都找不到任何STL头文件,语法错误。)

新信息: 尝试.mm和.h扩展名,错误: 在.h文件中: namespace DA以及涉及c ++代码的所有其他内容(所有此消息大约有40个错误)都为我提供了expected '=', ',', ';', 'asm' or '__attribute__' before ':' token

对于整个c ++文件中*: No such file or directory的所有实例,我也得到#include <*>

我确定它有一些简单的解决办法,但.mm和.h还不够。

更新: 发现将源代码复制并粘贴到新文件中似乎有效。 mm文件(或cpp文件)编译。但是h文件不起作用,它会在任何c ++特定代码出现时抛出上述错误。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可能在某个.m文件中包含(或导入)了您的h文件。那些也需要重命名为.mm。

最后,你可能会将所有.m fikes命名为.mm。顺便说一句,cpp文件,可以简单地保持cpp。没理由重命名它们。

答案 1 :(得分:1)

不确切知道你得到的错误是什么,而不是将你的文件扩展名为.hpp和.cpp扩展到项目中,我会将头文件的扩展名更改为.h,扩展名为您的.cpp文件为.mm或.M,以便Xcode将它们识别为Objective-C ++文件,并适当地编译它们。