2017-07-24 70 views
0

如何在创建Firebase事务时捕获值? Even the code example for transactions的火力文档中不起作用,它给了我下面的错误:捕获Firebase事务的值

Variable 'score' cannot be implicitly captured in a lambda with no capture-default specified 
Variable 'email' cannot be implicitly captured in a lambda with no capture-default specified 

这到底是怎么回事?不应该有一个选项来传递数据,如Future onCompletion callbacks?我使用最新的firebase C++框架(4.0.2)

回答

0

我通过切换到aws C++ sdk解决了我的问题。

0

文定义lambdas,空捕获列表[]捕获什么。 所以这个例子显然是错误的。 它应该是:

  1. [&] - 由refrence
  2. [=]捕捉一切 - 通过复制捕捉一切
  3. [email, &score] - 捕捉命名变量:电子邮件通过复制,得分的参考
  4. ...其他组合

来源:Cpp reference - Lambda expressions

+0

它实际上不是一个lambda函数(我希望它会),它看起来像一个。其原因(如firebase文档中所述):“请注意,我们无法在[]中捕获此值,因为我们的最低编译器规范(即C++ 11之前版本)不支持std :: function。 “ [(请参阅此链接)](https://firebase.google.com/docs/auth/cpp/google-signin#register_a_callback_on_a_futurewzxhzdk12wzxhzdk13) – domp