How much of C++ is supported in Objective-C++

≯℡__Kan透↙ 提交于 2020-01-01 10:12:27

问题


I want to make an iPhone app, but I am planning to make the framework in C++. Is it possible to use things like templates in Objective-C++. I guess really the question is, can I use boost?


回答1:


All of C++ is supported in Objective C++. It should be possible to use boost, but you might have to port some of the platform dependant things.




回答2:


Is it possible to use things like templates in Objective-C++.

Yes, but you need to take care how you mix types and interfaces between the pure C++ layers and the Objective-C++ code. Keep in mind the boundaries between layers, where you would need to convert types such as std::string to NSString, and so on.

For example, you could implement the core game engine in pure C++, and just implement your controllers and GUI code in Objective-C++. Then the Obj-C++ code is the glue between the pure C++ engine and Cocoa.

I guess really the question is, can I use boost?

Given the iPhone OS is a subset of OS X that still provides a full POSIX layer, most Boost libraries should work just fine. It should be just like writing Darwin code.

There are a number of limitations in Objective-C++ to be aware of (taken directly from the Objective-C 2.0 Reference Guide):

  • you cannot use Objective-C syntax to call a C++ object
  • you cannot add constructors or destructors to an Objective-C object
  • you cannot use the keywords this and self interchangeably
  • the class hierarchies are separate; a C++ class cannot inherit from an Objective-C class, and an Objective-C class cannot inherit from a C++ class
  • an exception thrown in Objective-C code cannot be caught in C++ code and, conversely, an exception thrown in C++ code cannot be caught in Objective-C code.



回答3:


It should be pointed out that you can't just do everything that you can do in C++ in Objective-C++. For example you can't call virtual functions on C++ objects from an Objective-C class. Once you call into a C/C++ function you can do whatever you want though.




回答4:


Objective C++ is a superset of C++. Everything that you can do in C/C++ can be done in Obj-C++. The "Objective" portion contains, among other things, a Smalltalk-esque messaging system and other additions to C++.




回答5:


C++ objects in Objective C will NOT necessarily act like in C++. For example constructors and destructors are not automatically called and (i think) that you can't implement virtual methods...




回答6:


Boost is useful but it is also a large overhead to add to a project.

Make sure you really need it before you go adding it.

For Regex support: RegexLite.

For everything else: Cocoa.



来源:https://stackoverflow.com/questions/740989/how-much-of-c-is-supported-in-objective-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!