我写了几个类来处理具有透明单位的数字,就好像它们只是整数或浮点数一样。简而言之:
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 ++特定代码出现时抛出上述错误。
谢谢!
答案 0 :(得分:2)
您可能在某个.m文件中包含(或导入)了您的h文件。那些也需要重命名为.mm。
最后,你可能会将所有.m fikes命名为.mm。顺便说一句,cpp文件,可以简单地保持cpp。没理由重命名它们。
答案 1 :(得分:1)
不确切知道你得到的错误是什么,而不是将你的文件扩展名为.hpp和.cpp扩展到项目中,我会将头文件的扩展名更改为.h,扩展名为您的.cpp文件为.mm或.M,以便Xcode将它们识别为Objective-C ++文件,并适当地编译它们。