我想在Objective-C iPhone应用程序中使用一些C ++ STL集合。显然,这可以通过为文件提供扩展名“.mm”来实现。有什么与此相关的怪癖/惊喜?
我想使用我熟悉的基本容器(vector,queue,set,...)
干杯!
答案 0 :(得分:7)
请参阅Using C++ With Objective-C,了解您能做什么和不能做什么的详细清单。你可以做大多数你期望的事情。你不能做像C ++类从Objective-C类继承的事情,反之亦然,你不能将C ++异常与Objective-C异常混合,而C ++引入了几个Objective-C中没有的新关键字。
答案 1 :(得分:5)
Objective-C ++的主要特点是如果你不将-fobjc-call-cxx-cdtors传递给g ++,它就不会调用ObjC对象中C ++实例变量的构造函数和析构函数。所以请记住打开这个选项,你应该做得很好。
答案 2 :(得分:2)
这些文件将使用Objective-C ++编译器进行编译,因此事情的行为将更像g ++而不是gcc,但是因为这就是你想要的东西,它可能不算是一个惊喜。从Objective-C方面来看,我不知道任何问题,而且我已经参与了几个大量项目,这些项目大量使用了Objective-C ++。请记住,Objective-C保留字也在Objective-C ++中保留,因此您偶尔会遇到第三方C ++库的问题(例如,如果他们在公共接口中使用“id”作为参数)。
答案 3 :(得分:1)
你会感到惊讶它的效果如何。我没有真正解决在.mm文件中混合Obj-C和C ++的任何问题。