fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Man;
  5.  
  6. class Dog{
  7. public:
  8.  
  9. Man *man;
  10. void (Man::*callbackFunc)(void);
  11.  
  12. void setCallback(Man *_man,void (Man::*_callbackFunc)(void)){
  13. callbackFunc=_callbackFunc;
  14. man=_man;
  15. }
  16.  
  17. void bite();
  18.  
  19. };
  20.  
  21. class Man
  22. {
  23. public:
  24. void haveDogBiteYou(){
  25. Dog *myDog = new Dog();
  26. myDog->setCallback(this,&Man::sayAh); // How???
  27. myDog->bite();
  28. }
  29.  
  30. void sayAh(){
  31. cout << "AHHHHHH!";
  32. }
  33. };
  34.  
  35.  
  36. void Dog::bite(){
  37. (man->*callbackFunc)();
  38. }
  39.  
  40.  
  41.  
  42. int main() {
  43. Man m;
  44. m.haveDogBiteYou();
  45. return 0;
  46. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
AHHHHHH!