OC和C++的混用1

//Objective-C

/*在混用之前需要做一步非常重要的事:不是代码而是编译器选项,在做混合编译之前一定要把编译器的Compile Sources As选项改为Objective C++

 修改方法:

 target->BuildSetting->Apple LLVM compiler 4.0 - Language选项底下的Compile Sources As修改为:Objective C++*/

#import <Foundation/Foundation.h>

class CPlusPlusClass;//这里不能使用@class指令,我猜测的原因可能是:后面的类是c++类,若要引用oc类肯定是用@class无疑

@interface Objective_CClass : NSObject

{

    @private

    CPlusPlusClass *testObj;

}

- (void)thisIsMyObjectiveCMethod;

@end

#import "Objective-CClass.h"

#import "CPlusPlusClass.h"

@implementation Objective_CClass

- (id) init {

    if (self = [super init]) {

        testObj = newCPlusPlusClass();

    }

    

    returnself;

}

- (void)thisIsMyObjectiveCMethod

{

    testObj->setCPlusPlus(100);

    testObj->thisIsMyCPlusplusMethod();

}

@end

//C++

#ifndef __OC_C______CPlusPlusClass__

#define __OC_C______CPlusPlusClass__

#include <iostream>

class CPlusPlusClass

{

private:

    int CPlusPlus;

public:

    CPlusPlusClass();

    virtual ~CPlusPlusClass();

    void setCPlusPlus(int num);

    void thisIsMyCPlusplusMethod ();

};

#include "CPlusPlusClass.h"

#include "Objective-CClass.h"

usingnamespace std;

CPlusPlusClass::CPlusPlusClass()

{

    cout<<"构造函数被调用"<<endl;

}

CPlusPlusClass::~CPlusPlusClass()

{

    cout<<"析构函数被调用"<<endl;

}

void CPlusPlusClass::setCPlusPlus(int num)

{

    this->CPlusPlus = num;

}

void CPlusPlusClass::thisIsMyCPlusplusMethod()

{

    cout<<CPlusPlus<<endl;

}

//以下是调用

Objective_CClass *obj = [[Objective_CClass alloc] init];

[obj thisIsMyObjectiveCMethod];