• 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];

  • 相关阅读:
    丁丁又病了
    领导之所以是领导
    丁丁的进步
    最近比较烦
    批量更新数据表
    转帖:《EnterLib PIAB深入剖析》系列博文汇总
    XML DOM介绍
    转大白话系列之C#委托与事件讲解大结局
    using
    jQuery工作原理解析以及源代码示例
  • 原文地址:https://www.cnblogs.com/chenhaosuibi/p/3442243.html
Copyright © 2020-2023  润新知