I am trying to make a wrapper in Objective-C so I don\'t have to write c++ outside the library classes.
The Library main file is LLAHProcessor.h .cpp
>
All you need to do is to create a .mm
as you have done, and the compiler should take care of everything.
The caveat being that it is not safe to have anything C++ related in the .h
files, since they can/will be imported by other Objective-C only files, and then everything breaks down. The main problem here is that you can not define C++ types directly as instance variables for your Objective-C wrapper class, unless every single .m
file is renamed as a Objective-C++ .mm
file.
The solution is to define the instance variables as void*
in the header file, and access them with type casting from the implementation file. Easiest solution for this would be to access the instance variable using a private property that to the typecast for you.
Example code assuming Foo
is a C++ class defined in Foo.h
:
// FooWrapper.h
#import
@interface FooWrapper : NSObject {
@private
void* foo;
}
// Actual wrapper API for Foo…
@end
// FooWrapper.mm
#import "FooWrapper.h"
#include