[关闭]
@lupnfer 2017-06-05T16:34:52.000000Z 字数 663 阅读 746

lambda

Code


在此输入正文

  1. #include "stdio.h"
  2. #include "functional"
  3. #include <iostream>
  4. #include <memory>
  5. class A {
  6. public:
  7. A(std::function<void(int)>& func) : func_(func){
  8. }
  9. ~A(){}
  10. // tick process
  11. virtual void process() {
  12. func_(6);
  13. }
  14. // interrupt
  15. // virtual void interrupt();
  16. private:
  17. std::function<void(int)> func_;
  18. };
  19. template <typename Func>
  20. class B {
  21. public:
  22. B(Func& func) : func_(func){
  23. //func_ = func;
  24. //func_(func);
  25. }
  26. ~B() {}
  27. virtual void process() {
  28. func_(6);
  29. }
  30. private:
  31. Func func_;
  32. };
  33. int main() {
  34. auto a = std::make_shared<A>((std::function<void(int)>) [](int i ) { std::cout << i << std::endl; });
  35. a->process();
  36. auto funcb = [](int i) { std::cout << i << std::endl; };
  37. auto b = std::make_shared<B <decltype(funcb)>>(funcb);
  38. b->process();
  39. char c = getchar();
  40. return 0;
  41. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注