Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. class T {
  2. public:
  3. double execute();
  4. };
  5.  
  6. T t;
  7. int a = 0, b = 1;
  8. t.execute([a,b]()->double{return (3*a + 5*b);});
  9.  
  10. class T {
  11. public:
  12. double execute(double (*expression)()) {
  13. return expression();
  14. }
  15. };
  16.  
  17. int main() {
  18. T t;
  19. double result = t.execute([]() -> double {return 1 + 1;});
  20. return 0;
  21. }
  22.  
  23. class T {
  24. public:
  25. template<typename Func>
  26. double execute(Func expression) {
  27. return expression();
  28. }
  29. };
  30.  
  31. int main() {
  32. T t;
  33. int a = 0, b = 1;
  34. double result = t.execute([&a,&b]() -> double {return 3 * a + 5 * b;});
  35. return 0;
  36. }
  37.  
  38. class T {
  39. public:
  40. double execute(std::function<double()> expression) {
  41. // sem templates, expression pode ser "armazenada" em qualquer lugar
  42. return expression();
  43. }
  44. };
  45.  
  46. int main() {
  47. T t;
  48. int a = 0, b = 1;
  49. // [&] captura qualquer variavel por referencia
  50. std::function<double()> func = [&]() -> double {return 3 * a + 5 * b;};
  51. double result = t.execute(func);
  52. return 0;
  53. }
  54.  
  55. class T {
  56. private:
  57. double (*expression)();
  58. public:
  59. T(double (*exp)()) : expression(exp) {}
  60. double execute() {
  61. return this->expression();
  62. }
  63. };
  64.  
  65. int main() {
  66. T t([]()->double {return 1+1;});
  67. double val = t.execute(); // val = 2
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement