How can I call a C++ constructor from inside an Objective-C class?
class CppClass {
public:
CppClass(int arg1, const std::string& arg2): _arg1(arg1), _arg2(arg2) { }
// ...
private:
int _arg1; std::string _arg2;
};
@interface ObjC: NSObject {
CppClass _cppClass;
}
@end
@implementation ObjC
- (id)init
{
self = [super init];
if ( self )
{
// what is the syntax to call CppClass::CppClass(5, "hello") on _cppClass?
}
return self;
}
@end
When I end up in a situation where the default constructor doesn't cut it, I make the instance variable a pointer and then use
newin theinitmethod anddeletein thedeallocmethod.It's a relatively recent thing that default constructors are called at all for Objective-C instance variables, actually.
There is no specification of the Objective-C language, let alone a specification of the Objective-C++ extension. Apple does publish a document called The Objective-C Programming Language, but it barely mentions C++, so you're often left on your own when you need to clarify something unobvious. The guys at the Clang mailing list often know better, though.