fork download
  1. #include <iostream>
  2. #include <functional>
  3.  
  4. class A{
  5. private:
  6. int id;
  7. public:
  8. A(int id) : id(id){};
  9. void display_id(){ std::cout << "id:" << id << std::endl; }
  10. };
  11.  
  12. class B{
  13. public:
  14. A *a;
  15. std::function<void()> f;
  16. public:
  17. B(A *a): a(a){}
  18. void set_callback(std::function<void()> f_){
  19. f = f_;
  20. }
  21. void invoke_callback(){
  22. f();
  23. }
  24. };
  25.  
  26. int main(){
  27. A a{5};
  28. B b{&a};
  29. // auto f = ;
  30. b.f = [&](){ std::cout << "hello!" << std::endl; a.display_id(); };
  31. b.invoke_callback();
  32.  
  33. return 0;
  34. }
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
hello!
id:5