fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <functional>
  5. #include <utility>
  6.  
  7. class cButton{
  8. private:
  9. const std::function<void()> effect;
  10. public:
  11. cButton(const std::function<void()>& effect);
  12. void onClick();};
  13.  
  14. cButton::cButton(const std::function<void()>& effect): effect(effect){}
  15.  
  16.  
  17. class cMessage{
  18. public:
  19. std::vector<cButton*> button;
  20. cMessage(const std::vector<std::function<void()> >& effect);};
  21.  
  22.  
  23. cMessage::cMessage(const std::vector<std::function<void()> >& effect){
  24. for(unsigned int i = 0; i < effect.size(); i++)
  25. button.push_back(new cButton(effect[i])); }
  26.  
  27.  
  28. void cButton::onClick(){
  29. if(effect) effect();
  30. }
  31.  
  32. int main(){
  33. cMessage* message{};
  34. {
  35. const std::pair<const std::string, const unsigned int> var("test", 1);
  36. std::function<void()> f = [var](){ std::cout << var.first << std::endl << var.second << std::endl; };
  37. message = new cMessage( {f} );
  38. }
  39. message->button[0]->onClick();
  40. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
test
1