我想在Objective-C iPhone应用程序中使用一些C ++ STL集合。显然,这可以通过给文件扩展名“.mm”来实现。 。有什么与此相关的怪癖/惊喜?

我想使用我熟悉的基本容器(vector,queue,set,...)

干杯!

有帮助吗?

解决方案

请参阅使用带有Objective-C的C ++ 有关您能做什么和不能做什么的详细清单。你可以做大多数你期望的事情。你不能做像C ++类从Objective-C类继承的事情,反之亦然,你不能将C ++异常与Objective-C异常混合,而C ++引入了几个Objective-C中没有的新关键字。

其他提示

Objective-C ++的主要特点是如果你不将-fobjc-call-cxx-cdtors传递给g ++,它就不会调用ObjC对象中C ++实例变量的构造函数和析构函数。所以请记住打开这个选项,你应该做得很好。

这些文件将使用Objective-C ++编译器进行编译,因此事情的行为将更像g ++而不是gcc,但是因为这就是你想要的东西,它可能不算是一个惊喜。从Objective-C方面来看,我不知道任何问题,而且我已经参与了几个大量项目,这些项目大量使用了Objective-C ++。请记住,Objective-C保留字也在Objective-C ++中保留,因此您偶尔会遇到第三方C ++库的问题(例如,如果他们在公共接口中使用“id”作为参数)

你会感到惊讶它的效果如何。我没有真正解决在.mm文件中混合Obj-C和C ++的任何问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top