?????????????????л?????????????????C#??Objective-c????л????????????????????淶???????????????????????????л????????????????????????

????????о?C#??????????????????????????÷?????????Щ??C?????????????Objective-c??????????????????????????????д???????Objective-c??е????????п????????????????????????????????C#????У???C???????????????????????????????????????C#??????????????????????????????????????????д????????

???????????????????C++??????????????У?????????????????????????????й?C++????????????????????????????????????????п??????????????????????????????????????????????????ú??о???o??????????C++???????????????????????????????Ρ?

????C++?л???????????????

typedef void (*Fun)();
void function(Fun fun) {...}

???????????????????????????????????????????????“??????????????????”??

??????????????????????????????????????????к??????????????????????????????????????????

//event.h
#ifndef _EVENT_H_
#define _EVENT_H_
#include <string>
#include <iostream>
#include <vector>
using namespace std;
template <typename Handler>
class event //?????????????????п???????κ??????????????????У????????
{
public:
 event()
 {
 }
 event& operator+= (const Handler v)
 {
  add(v);
  return *this;
 }
 event& operator-= (const Handler v)
 {
  remove(v);
  return *this;
 }
 vector<Handler>& GetEvent()
 {
  return m_HandlerList;
 }
protected:
 virtual void add(Handler v)
 {
  m_HandlerList.push_back(v);
 }
 virtual void remove(const Handler v)
 {
  vector<Handler>::iterator it = m_HandlerList.begin();
  for( ; it != m_HandlerList.end() ; it++)
  {
   if((*it) == v)
   {
    m_HandlerList.erase(it);
    break;
   }
  }
 }
private:
 vector<Handler> m_HandlerList;
};
#endif