//
// 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

Leave a comment