On 27 May '08, at 4:50 PM, Todd Heberlein wrote:
(1) Changing an Objective-C file to an Objective-C++ object (by renaming it to a .mm file) often causes me to rename a lot of files to .mm, because if the Objective-C class definition has a C++ object in it, every source code file that includes that Objective-C class definition needs to be renamed to a .mm file;
I came up with an idiom to avoid this. Let's say the C++ class you want to use is MyCppClass. You declare the Objective-C class that uses it as:
// MyObjCClass.h #ifdef __cplusplus class MyCppClass; #else typedef struct MyCppClass MyCppClass; #endif @interface MyObjCClass { @private MyCppClass *cppObject; } .... @endThis basically tells a white lie to any non-C++-savvy source file that imports the header, telling them that MyCppClass* is just some kind of pointer, and not to worry its pretty little head about exactly what it is. This is safe because (a) all pointers are the same size, so the ivar layout is correct; and (b) no one but MyCppClass.mm can actually access the raw instance variable anyway.
—Jens
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]