fork download
  1. #include <vector>
  2. #include <string>
  3. #include <iostream>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. class Cont
  10. {
  11. public:
  12.  
  13. void add(int a)
  14. {
  15. m_vect.push_back(a);
  16. }
  17.  
  18. template <class ModuleType>
  19. void map(ModuleType *module, void (ModuleType::*mapMethod)(int a))
  20. {
  21. for (int i = 0; i < m_vect.size(); i++)
  22. (module->*mapMethod)(m_vect[i]);
  23. }
  24.  
  25. private:
  26.  
  27. std::vector<int> m_vect;
  28.  
  29. };
  30.  
  31. class Oper
  32. {
  33. public:
  34. void mapMethod1(int a)
  35. {
  36. std::cout << a << std::endl;
  37. }
  38.  
  39. void exec()
  40. {
  41. Cont cont;
  42. cont.add(1);
  43. cont.add(3);
  44. cont.add(4);
  45.  
  46. cont.map<Oper>(this, &Oper::mapMethod1); // **?????? ??????????**
  47. }
  48. };
  49.  
  50. int main()
  51. {
  52. Oper oper;
  53. oper.exec();
  54.  
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0s 4480KB
stdin
Standard input is empty
stdout
1
3
4