un enfermant-fonction d'une variable locale ne peut pas être référencée dans un corps de lambda, sauf si elle est dans la liste de capture

J'ai json::valeur de l'objet et j'essaie d'obtenir des valeurs dans une structure (struct) mais j'ai cette erreur au sujet de la capture de la liste. Je comprends que dans cette phrase bracet [] conserve la capture de liste, mais je ne peux pas comprendre comment. Comment puis-je retourner une valeur dans une fonction lambda?

   void JsonDeneme::setValues(json::value obj)
{
    weather.coord.lon = obj.at(L"coord").at(L"lon").as_double();
    weather.coord.lat= obj.at(L"coord").at(L"lat").as_double();

}

void JsonDeneme::getHttp()
{
    //json::value val;
    http_client client(U("http://api.openweathermap.org/data/2.5/weather?q=Ankara,TR"));

    client.request(methods::GET)

    .then([](http_response response) -> pplx::task<json::value>
    {

        if (response.status_code() == status_codes::OK)
        {
            printf("Received response status code:%u\n", response.status_code());
            return response.extract_json();
        }
        return pplx::task_from_result(json::value());
    })

    .then([ ](pplx::task<json::value> previousTask)
    {
        try
        {
            json::value   v = previousTask.get();
            setValues(v);//-----------------------------------------
        }
        catch (http_exception const & e)
        {
            wcout << e.what() << endl;
        }
    })
    .wait();

}
  • Quelle est l'erreur que vous obtenez?
  • un enfermant-fonction d'une variable locale ne peut pas être référencée dans un corps de lambda, sauf si elle est dans la liste de capture
  • ce problème est résolu quand j'ai ajouté [cela], mais j'essaie de comprendre pourquoi
InformationsquelleAutor user2957741 | 2014-11-13