Apr 10

I’ve been experimenting with mixing C++ and Objective-C.

When you port C++ to the iPhone you will probably want to just add your code to an Objective-C project.

Here are some of the issues that may lead to compiler warnings and errors:

  • You need to change the extension of your C++ source files from *.cpp to *.mm
  • If you reference your C++ *.h file from a *.m file you will get weird syntax errors around your class definition. The reason is because ANY file in your project that references a C++ *.h file must end in *.mm. So if your Objective-C code references a C++ file, change the extension to *.mm.
  • You will get warnings that Objective-C ignores constructors and destructors. So you will have to break out that code and call it after defining your object.
  • You will get a weird syntax error if you forget to put a semi-colon after your class definition ( class MyClass { … } ; ). This fixes the error “error: new types may not be defined in a return type“. Xcode generates the brackets but doesn’t put the semi-colon in automatically. So be on the lookout for that. You won’t get this error until you add a method that returns something. If you started out with a bunch of void methods – then wonder why it suddenly broke – that’s why.
  • The virtual keyword isn’t allowed. In Objective-C all methods are virtual. If your derived class has a matching method, it will be called instead of the one in the base class – as if you did declare it virtual.

See also: Using C++ With Objective-C (developer.apple.com)

Tags:

Apr 05

Richard S. Wright, Jr. one of the authors of the OpenGL(R) SuperBible: Comprehensive Tutorial and Reference (4th Edition) has written an article for Doctor Dobb’s Journal:

OpenGL and Mobile Devices: Round 2 – OpenGL ES for the iPhone and iPod Touch

If you know basic OpenGL and are trying to get started on the iPhone, this may be a good place to start.

UPDATE: Be forewarned – I have yet to successfully port the application listed in the article to the iPhone. For suggestions see my next post about mixing C++.

Tags: