c++抽象类实现OC中的协议

来源:互联网 发布:淘宝网下雪纺女短袖 编辑:程序博客网 时间:2024/05/16 17:58

OC中协议的实现:

A中要调用B中的方法,通过delegate(代理)调用协议的方法来实现。


下面看C++中怎么实现:

一、先定义一个协议类 该类是一个抽象类

#ifndef __AppDelegateCplus__AppProtocol__

#define __AppDelegateCplus__AppProtocol__

//c++实现 oc的代理协议

#include <stdio.h>

#include <iostream>

class AppProtocol {  

public:

    virtualvoid ApplicationDidFinsh() =0;//存虚函数

};

#endif


二、再定义一个代理类 要实现这个协议就必须继承这个抽象类

#ifndef __AppDelegateCplus__AppDelegate__

#define __AppDelegateCplus__AppDelegate__

#include <stdio.h>

#include "AppProtocol.h"

//代理类继承协议类为了实现

class AppDelegate:publicAppProtocol {

public:

    void ApplicationDidFinsh();//声明协议的方法

};

#endif


在.cpp中:

#include "AppDelegate.h"

//实现协议的方法

voidAppDelegate:: ApplicationDidFinsh()

{

    printf("开始运行!!\n");

}


三、定义Application类也就是应用类

#ifndef __AppDelegateCplus__Application__

#define __AppDelegateCplus__Application__

#include <stdio.h>

#include "AppDelegate.h"

class Application

{

private:

    AppDelegate *delegate;                 //私有属性delegate

public:

    void setDelegate(AppDelegate *delegate);//设置器

    void run();

};

#endif 

.cpp文件:

#include "Application.h"

voidApplication:: setDelegate(AppDelegate *delegate)

{

    this->delegate = delegate;             //给delegate赋值

}

voidApplication:: run()

{

    this->delegate->ApplicationDidFinsh();   //这里就实现了delegate调用协议方法的功能 

}


四、最后看main函数

#import <Foundation/Foundation.h>

#import "AppDelegate.h"

#import "Application.h"

int main(int argc,constchar * argv[]) {

    Application *app =newApplication();

    AppDelegate *delegate =newAppDelegate();

    app->setDelegate(delegate);

    app->run();

    delete app;

    delete delegate;

    return0;

}

最后打印出 

开始运行!!






0 0
原创粉丝点击