fork download
  1. #include <cassert>
  2. #include <functional>
  3.  
  4. using namespace std;
  5.  
  6. class Child;
  7. class Parent
  8. {
  9. public:
  10. virtual ~Parent() {}
  11.  
  12. function<void()> funcPointer;
  13. function<void(Parent*)> funcPointer2;
  14. void (Child::*funcPointer3)();
  15. };
  16.  
  17. class Child : public Parent
  18. {
  19. public:
  20. void TestFunc() {
  21.  
  22. }
  23. void Do() {
  24. funcPointer = bind(&Child::TestFunc, this);
  25. funcPointer2 = [](Parent* arg) {
  26. assert(dynamic_cast<Child*>(arg) != nullptr);
  27.  
  28. static_cast<Child*>(arg)->TestFunc();
  29. };
  30. funcPointer3 = &Child::TestFunc;
  31. funcPointer();
  32. funcPointer2(this);
  33. (this->*funcPointer3)();
  34. }
  35. };
  36.  
  37. int main() {}
Success #stdin #stdout 0s 3408KB
stdin
Standard input is empty
stdout
Standard output is empty