如何在oc的类中调用c++对象

//
//  CPlusPlusClass.h
//  MixCompileTest
//
//  Created by biosli on 11-4-30.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#ifndef __CPLUSPLUS_CLASS_H__
#define __CPLUSPLUS_CLASS_H__

class CPlusPlusClass {
public:
    CPlusPlusClass();
    virtual ~CPlusPlusClass();
    void func();
    void setInt (int i) {
        m_i = i;
    }
    
private:
    int m_i;
};


#endif

//
//  CPlusPlusClass.mm
//  MixCompileTest
//
//  Created by biosli on 11-4-30.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#include <stdio.h>
#include "CPlusPlusClass.h"

CPlusPlusClass::CPlusPlusClass() : m_i(0) 
{
    printf("CPlusPlusClass::CPlusPlusClass()\n");
    func();
}

CPlusPlusClass::~CPlusPlusClass() 
{
    printf("CPlusPlusClass::~CPlusPlusClass()\n");
}

void CPlusPlusClass::func() {
    printf("CPlusPlusClass func print: %d\n", m_i);
}

//
//  ObjectiveCAdaptor.h
//  MixCompileTest
//
//  Created by biosli on 11-4-30.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>

class CPlusPlusClass; //这个声明得小心,千万不要写成@class,兄弟我搞了半宿才找到这个错误。呵呵,见笑,见笑。

@interface ObjectiveCAdaptor : NSObject {
@private
    CPlusPlusClass *testObj;
}

- (void) objectiveFunc;
@end

//
//  ObjectiveCAdaptor.m
//  MixCompileTest
//
//  Created by biosli on 11-4-30.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "ObjectiveCAdaptor.h"
#include "CPlusPlusClass.h"

@implementation ObjectiveCAdaptor

- (id) init {
    if (self = [super init]) {
        testObj = new CPlusPlusClass();
    }
    
    return self;
}

- (void) dealloc {
    if (testObj != NULL) {
        delete testObj;
        testObj = NULL;
    }
    [super dealloc];
}

- (void) objectiveFunc
{
    testObj->setInt(5);
    testObj->func();

@end

//调用示例:
- (void) callObjectiveCAdaptorMethod
{
    ObjectiveCAdaptor *testObjectiveCObj = [[ObjectiveCAdaptor alloc] init];
    [testObjectiveCObj objectiveFunc];
    [testObjectiveCObj release];
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值