Channels ▼

Anna Koneva

Dr. Dobb's Bloggers

Calling an Objective-C Method from a C++ Class

February 14, 2014

Let's say you have the following Objective-C class and you want to access it from C++:

@interface ObjC : NSObject

- (int)someObjCMethod:(int)param;


@implementation ObjC

- (int)someObjCMethod:(int)param
    NSLog(@"param = %i", param);
    return param;


You might use the code in CppClass.cpp, shown here, for access:

class CppClass
        int someMethod(int param);

But if you do, you'll get a lot of compilation errors like these (from Clang):

… Expected unqualified-id
… Unknown type name 'NSString'
… Unknown type name 'Protocol'


A solution to the problem is to rename this last file from CppClass.cpp to This will turn the C++ class into Objective-C++ and will do exactly what you need. Both GCC and Clang will see the new file correctly and allow the interoperation to work as expected.


Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags


<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags


<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

