Using C++ With Objective-C

| No Comments | No TrackBacks

//

//  Greeting.h 头文件

//  cpp_demo

//

//  Created by 孔祥波 on 10-5-24.

//  Copyright 2010 aaa. All rights reserved.

//


#import <Foundation/Foundation.h>


class Hello {

private:

id greeting_text// holds an NSString

public:

Hello() {

greeting_text = @"Hello, world!";

}

Hello(const char* initial_greeting_text) {

greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text];

}

void say_hello() {

printf("%s\n", [greeting_text UTF8String]);

}

};


@interface Greeting : NSObject {

@private

Hello *hello;

}

- (id)init;

- (void)dealloc;

- (void)sayGreeting;

- (void)sayGreeting:(Hello*)greeting;

@end





//

//  Greeting.mm

//  cpp_demo

//

//  Created by 孔祥波 on 10-5-24.

//  Copyright 2010 aaa. All rights reserved.

//


#import "Greeting.h"



@implementation Greeting

- (id)init {

    if (self = [super init]) {

        hello = new Hello();

    }

    return self;

}

- (void)dealloc {

    delete hello;

    [super dealloc];

}

- (void)sayGreeting {

    hello->say_hello();

}

- (void)sayGreeting:(Hello*)greeting {

    greeting->say_hello();

}

@end


使用Greeting 类,主要使用的类命名必须以.mm结尾,否则无法编译。

#import "Greeting.h" 引入定义

   

Greeting *greeting = [[Greeting alloc] init];

    [greeting sayGreeting];                         // > Hello,  world!

    Hello *hello = new Hello("Bonjour, monde!");

    [greeting sayGreeting:hello];                   // > Bonjour,  monde!

    delete hello;

    [greeting release];


例子下载  cpp_demo.zip

No TrackBacks

TrackBack URL: http://iphone.ipsw.info/mt/mt-tb.cgi/304

Leave a comment