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?
:/
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.