//
// 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];
}
如何在oc的类中调用c++对象
最新推荐文章于 2022-01-21 16:10:08 发布