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
#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;
}
最后打印出开始运行!!