我想在我的 Objective-C iPhone 应用程序中使用一些 C++ STL 集合。显然,这可以通过为文件提供扩展名 ".mm" 来实现。与此相关的一些怪癖/惊喜是什么?
我想使用我熟悉的基本容器(向量、队列、集合……)
干杯!
我想在我的 Objective-C iPhone 应用程序中使用一些 C++ STL 集合。显然,这可以通过为文件提供扩展名 ".mm" 来实现。与此相关的一些怪癖/惊喜是什么?
我想使用我熟悉的基本容器(向量、队列、集合……)
干杯!
有关可以做什么和不能做什么的详细列表,请参阅将 C++ 与 Objective-C一起使用。你可以做你所期望的大部分事情。你不能做一些事情,比如让 C++ 类从 Objective-C 类继承,反之亦然,你不能将 C++ 异常与 Objective-C 异常混合,C++ 引入了一些在 Objective-C 中不存在的新关键字。
Objective-C++ 的主要怪癖是,如果你不将 -fobjc-call-cxx-cdtors 传递给 g++,它就不会调用 ObjC 对象中 C++ 实例变量的构造函数和析构函数。所以记得打开那个选项,你应该很好。
这些文件将使用 Objective-C++ 编译器进行编译,因此与 gcc 相比,它的行为更像 g++,但既然这是你想要的,它可能不会让人感到意外。在 Objective-C 方面,我不知道有任何问题,而且我参与了几个大型项目,这些项目大量使用了 Objective-C++。请记住,Objective-C 保留字在 Objective-C++ 中也是保留的,因此您偶尔会遇到第三方 C++ 库的问题(例如,如果它们在公共接口中使用“id”作为参数)。
你会惊讶于它的效果如何。我还没有真正遇到在 .mm 文件中混合 Obj-C 和 C++ 的任何问题。