fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct triple_caller
  5. {
  6. typedef void (*callback_type)(int index, void* param);
  7. callback_type callback;
  8. void* param;
  9.  
  10. triple_caller(callback_type callback, void* param) : callback(callback), param(param) { }
  11.  
  12. void call()
  13. {
  14. callback(0, param);
  15. callback(1, param);
  16. callback(2, param);
  17. }
  18. };
  19.  
  20. struct my_proc_param
  21. {
  22. string msg;
  23. };
  24.  
  25. void my_proc(int index, void* param)
  26. {
  27. my_proc_param* p = static_cast<my_proc_param*>(param);
  28. cout << "#" << index << " " << p->msg << endl;
  29. }
  30.  
  31. int main()
  32. {
  33. my_proc_param ap, bp;
  34. ap.msg = "Привет";
  35. bp.msg = "Тяночку бы";
  36.  
  37. triple_caller a(my_proc, &ap), b(my_proc, &bp);
  38. a.call();
  39. b.call();
  40.  
  41. return 0;
  42. }
Success #stdin #stdout 0s 5516KB
stdin
Standard input is empty
stdout
#0 Привет
#1 Привет
#2 Привет
#0 Тяночку бы
#1 Тяночку бы
#2 Тяночку бы