问题描述
我很难理解 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 (将#修改为@)