Advertisement
rizky_herucakra

Callback with std::function

Jul 5th, 2013
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.92 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  callbackWithMemberPointer
  4. //
  5. //  Created by Rizky Herucakra on 7/5/13.
  6. //  Copyright (c) 2013 Rizky Herucakra. All rights reserved.
  7. //
  8.  
  9. #include <iostream>
  10. #include <functional>
  11.  
  12. class A{
  13. public:
  14.     void a_callback();
  15.  
  16. };
  17.  
  18. void A::a_callback(){
  19.     using namespace std;
  20.     cout << "A::a_callback is called";
  21. }
  22.  
  23. typedef void (A::*callback_func)();
  24.  
  25. class B{
  26.     std::function<void ()> callback;
  27.  
  28. public:
  29.     void do_something();
  30.     void register_callback(std::function<void()> f);
  31.    
  32. };
  33.  
  34.  
  35. void B::register_callback(std::function<void()> f){
  36.     callback = f;
  37. }
  38.  
  39. void B::do_something(){
  40.     using namespace std;
  41.     cout << "B::do_something called" << endl;
  42.     if (callback) callback();
  43. }
  44.  
  45.  
  46.  
  47. int main(int argc, const char * argv[])
  48. {
  49.     using namespace std;
  50.     A a;
  51.     B b;
  52.     b.register_callback(bind(mem_fn(&A::a_callback), &a));
  53.     b.do_something();
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement