This code works for me. Can you see any fundamental difference between it and what you have? It compiles with no error or warnings and it logs "The list contains 1 items" when run.

//ObjCPPController.m
#import "ObjCPPController.h"
#import "SomeObjCPPClass.h"

@implementation ObjCPPController

- (IBAction) createACPPObject:(id)sender
{
  SomeObjCPPClass* cppClass = [[SomeObjCPPClass alloc] init];
  [cppClass release];
}


// SomeObjCPPClass.mm
#import "SomeObjCPPClass.h"
#include <list>

@implementation SomeObjCPPClass

- (id)init
{
  self = [super init];

  if (self)
  {
    std::list<int> temp;
    temp.push_back(42);
    NSLog(@"The list contains %d item(s)", temp.size());
  }

  return self;
}


On Feb 2, 2009, at 5:19 PM, James Trankelson wrote:

I guess I should have been more clear.

My Objective C++ file is named with an .mm extension. The
"sourcecode.cpp.objcpp" specification is the XCode setting that tells
the compiler how to treat the file.

jim

On Tue, Feb 3, 2009 at 2:16 AM, Wayne Packard <[email protected]> wrote:
Hi,

The build system uses the file extension of the source file to determine how to treat the code in the file. .m files get treated as Objective-C (by default). .mm files get treated as Objective-C++. Try renaming your source code file from sourcecode.cpp.objcpp to sourcecode.mm and see if you get
better results.

wp

On Feb 2, 2009, at 5:08 PM, James Trankelson wrote:

Hi,

For the majority of my OS X programming life, I've been using
Objective C exclusively. However, I now have a reason to want to use
some C++ standard template libraries, and have started looking into
Objective C++. I've found the documentation on Objective C++ lacking, and was hoping if someone could just show me how I can accomplish the
following:

From an Objective C class, allocate an object that can contain

references to C++ standard template libraries.

For example:

#include "OCPP_Class.h"

@implementation OC_Class

-(void) foo {
OCPP_Class *bar = [[OCPP_Class alloc] init];
}

@end


@implementation OCPP_Class

-(id) init
{
std::list<int> temp;
}

@end

When I try to compile this (with the latter compiled as
sourcecode.cpp.objcpp), the compiler complains about the reference in
the  OC_Class where I allocate my object. Something about the first
parameter being of the wrong pointer type.

While this sounds like something I might suspect with C++ trying to
send the this pointer, I have no idea how to get around this, or how
to fix it. Can anyone point me in the right direction?

Thanks.

-jim
_______________________________________________

Cocoa-dev mailing list ([email protected])

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/wpackard%40mac.com

This email sent to [email protected]



_______________________________________________

Cocoa-dev mailing list ([email protected])

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]

Reply via email to