fork download
  1. #include <cstdio>
  2. #include <functional>
  3.  
  4.  
  5. class B {
  6. public:
  7. typedef std::function<void (B*)> Function;
  8.  
  9. void f3() {
  10. puts("okay");
  11. }
  12. void f1() {
  13. _func(this);
  14. }
  15.  
  16. Function _func;
  17. };
  18.  
  19. class D : public B
  20. {
  21. public:
  22. D()
  23. {
  24. _func = (void (B::*)()) &D::f2; // Here is the awfull cast I hate to do
  25. }
  26.  
  27. void f2() {
  28. f3();
  29. }
  30.  
  31. };
  32.  
  33. int main() {
  34. D d;
  35. d.f1();
  36. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
okay