0

sorry for my english is not good. I'm trying to use pure c++ code in my iOS project but I have the next issues:

I create one new file product.cpp + product.h, I create his own methods and atributes, and I want to use this class in my viewcontroller.m but dont run, I change the extensión of the viewcontroller.m to viewcontroller.mm but dont run but if I change the extension of the appDelegate.m to appDelegate.mm this is ok and run.

My question is I always have to change mi files to .mm if I want to use .cpp?

:/

NTTake
  • 406
  • 1
  • 3
  • 19
  • I think the answer is yes, since .mm means you're writing in Objective-C++ which is technically a language of its own. –  Jun 03 '12 at 00:11
  • Check out this similar question and see if this helps: http://stackoverflow.com/questions/3698459/objective-c-and-cpp-files-in-xcode – Benjamin Jun 03 '12 at 00:13

1 Answers1

0

Generally yes, a file extension of .mm tells Xcode to invoke the Objective-C++ compiler, whereas .m tells the compiler to invoke the Objective-C compiler. You can set the compiler type on a per-file basis using the file-settings pane on the right (so you could force Objective-C++ compilation on a .m file), but this is non-intuitive and is likely to confuse future maintainers.

If you're willing to consider some advice from a long-time C++ and Objective-C user, I've done a lot of mixing of the two and over time it's more trouble than it's worth. You're much better off if sticking purely to Objective-C, and if you have some C++ library that you just have to integrate, then make a C wrapper for it.

It used to be the case that Xcode analyzer only worked on Objective-C files, not Objective-C++, so you'd lose a lot of the value that tool provides by writing Objective-C++ files. I'm not sure if Apple has changed it in the year or so since I last wrote any Objective-C++ but I imagine there isn't a lot of reason for them to. Stick with Objective-C if you can because the Analyzer is extremely helpful.

par
  • 17,361
  • 4
  • 65
  • 80