fork download
  1. #include <stdio.h>
  2.  
  3. class A
  4. {
  5. public:
  6. virtual ~A(){}
  7. void A_Func(void){ printf( "A_Func();\n" ); }
  8. };
  9.  
  10. class B : public A
  11. {
  12. public:
  13. B() : m_Value(99){}
  14. void Func(void){ printf( "B value : %d;\n", m_Value ); }
  15. int m_Value;
  16. };
  17.  
  18. typedef void(A::*A_Callback)(void);
  19. typedef void(B::*B_Callback)(void);
  20.  
  21. class C
  22. {
  23. public:
  24. void SetCallback( B* pB, B_Callback callback )
  25. {
  26. m_pB = pB;
  27. m_Callback = callback;
  28. }
  29. void Do( void )
  30. {
  31. (m_pB->*m_Callback)();
  32. }
  33. B* m_pB;
  34. B_Callback m_Callback;
  35. };
  36.  
  37. int main( void )
  38. {
  39. B b;
  40. C c;
  41. c.SetCallback( &b, &A::A_Func );
  42. c.Do();
  43. return 0;
  44. }
Success #stdin #stdout 0.01s 2724KB
stdin
Standard input is empty
stdout
A_Func();