fork download
  1. #include <functional>
  2. #include <iostream>
  3. #include <string>
  4.  
  5. struct functor_with_string_data
  6. {
  7. std::string s ;
  8.  
  9. functor_with_string_data( const std::string & str ) : s(str) {}
  10.  
  11. void operator()() { std::cout << s << '\n' ; }
  12. };
  13.  
  14. struct functor_with_int_data
  15. {
  16. int data ;
  17.  
  18. functor_with_int_data( int num ) : data(num) {}
  19.  
  20. void operator()() {std::cout << data << '\n' ;}
  21. };
  22.  
  23.  
  24. class myclass
  25. {
  26. public:
  27. myclass( std::function<void()> f = nullptr ) : _func(f) {}
  28. void setCallback( std::function<void()> f ) { _func = f ; }
  29.  
  30. void doCallback() const { _func(); }
  31.  
  32.  
  33. private:
  34. std::function<void()> _func ;
  35. };
  36.  
  37. int main()
  38. {
  39. myclass obj ;
  40.  
  41. obj.setCallback(functor_with_string_data("Hello, world!")) ;
  42. obj.doCallback() ;
  43.  
  44. obj.setCallback(functor_with_int_data(42)) ;
  45. obj.doCallback() ;
  46. }
Success #stdin #stdout 0s 3032KB
stdin
Standard input is empty
stdout
Hello, world!
42