Guest User

Untitled

a guest
May 26th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4. template <class ptrType> class A
  5. {
  6. public:
  7. ptrType ptrData;
  8. A<ptrType>::A(ptrType S)
  9. {
  10. ptrType ptrData = S;
  11. ptrData();//Вызов Foo по указателю из конструктора класса.(работает)
  12. }
  13. void Foo2();
  14. };
  15. template <class ptrType>void A<ptrType>::Foo2()
  16. {
  17. ptrData();//Вызов Foo по указателю.(не работает)
  18. }
  19. void Foo()//Интересующий функция.
  20. {
  21. cout << "1";
  22. };
  23. int main()
  24. {
  25. typedef void(*PTR_Foo)();
  26. PTR_Foo ptrFoo = &(Foo);//Указатель на функцию Foo
  27. A<PTR_Foo> a(ptrFoo);
  28. a.Foo2();//Вызов Foo2 из экземпляра а класса А
  29. return 0;
  30. }
  31.  
  32. ptrType ptrData = S;
  33.  
  34. ptrData = S;
  35.  
  36. A<ptrType>::A(ptrType S) : ptrData(S)
  37. {
  38. ptrData();
  39. }
  40.  
  41. void (A<PTR_Foo>::*f)() = &A<PTR_Foo>::Foo2;
  42. (a.*f)();
  43.  
  44. class B
  45. {
  46. public:
  47. void Foo() { cout << "1"; };
  48. };
  49.  
  50. B b;
  51. std::function<void()> f2 = std::bind(&B::Foo, b);
  52. f2();
  53.  
  54. std::shared_ptr<B> pb = std::make_shared<B>();
  55. std::function<void()> f2 = std::bind(&B::Foo, pb);
  56. f2();
Add Comment
Please, Sign In to add comment