shared_ptr 和 lambda 捕获

问题描述

我很难理解 lambda 捕获的工作原理,特别是它如何捕获 lambda 中的参数。我花了几个小时阅读关于 lambdas 的同样琐碎的例子,但仍然不清楚。

这是上下文。我有一个类节点:

class EventComparisonNode : public Node{ //or Date comparison node,only difference is instead of event there is Date struct
 public:
  EventComparisonNode(Comparison cmp,const std::string& event);
  bool Evaluate(const Date& date,const std::string& event) override; //Date struct contains ints
 private:
  Comparison cmp_; //it's enum
  std::string event_;
};

我有这段代码

//ParseCondition returns shared_ptr<Node>
auto condition = ParseCondition(is);
auto predicate = [condition](const Date& date,const string& event) {
    return condition->Evaluate(date,event);
};

我的问题是:

谓词究竟是什么?是某种自定义的 lambda 类型还是什么?

在第二个字符串中,我捕获了 shared_ptr。行。但是 Date 和 string& 类型来自哪里?我看不到任何结构或变量或任何可以从中获取它的东西(同时)。变量不是来自任何地方。

顺便说一句,这里提供完整代码:(不是我的代表)

https://github.com/freeraisor/yandexcplusplus/blob/master/2.%20Yellow/Final%20Project/main.cpp

感谢您的关注!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)