#include <iostream>

using namespace std;
typedef void(*FUNC)(void);

void a()
{
  cout << "This is a func ! \n";
}

void b()
{
  cout << "This is b func ! \n";
}

class c
{
public:

  void operator()(void)
  {
    cout << "This is a class c!\n";
  }
};

template<class T>
class callback
{
public:
  void operator()(T func)
  {
    func();
  }

};

int main ()
{
  callback<FUNC> ca;
  ca(a);

  callback<FUNC> cb;
  cb(b);

  c cc;
  callback<c&> Cc;
  Cc(cc);

  return 0;
}

 

posted on 2013-01-17 17:31  xunya  阅读(96)  评论(0编辑  收藏  举报