Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use C++ with Objective-C in XCode

I want to use/reuse C++ object with Objective-C. I have a hello.h that has the class definition, and hello.cpp for class implementation.

class Hello
{ int getX() ... };

And I use this class in Objective-C function.

#include "hello.h"
...
- (IBAction) adderTwo:(id)sender
{
    Hello *hi = new Hello();            
    int value = hi->getX();
    NSLog(@"Hello %d", value);
    [textField setIntValue:value];

When I compile the code in Xcode, I get this error message.

class Hello *XXXXX
Users/smcho/Desktop/cocoa/adderTwo/hello.h:9:0
/Users/smcho/Desktop/cocoa/adderTwo/hello.h:9: 
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Hello'

What went wrong?

like image 911
prosseek Avatar asked Apr 21 '10 13:04

prosseek


2 Answers

Make sure you compile that file as "Objective-C++".

The simplest way is to rename it as *.mm.

If you don't want to rename the *.m file,

  1. Select your file.
  2. Open the File Info dialog (Cmd+I)
  3. In File Type, select "sourcecode.cpp.objcpp"
like image 124
kennytm Avatar answered Nov 04 '22 15:11

kennytm


Rename the Objective-C file from filename.m to filename.mm to make it compile as Objective-C++.

like image 42
Marcelo Cantos Avatar answered Nov 04 '22 16:11

Marcelo Cantos