#cpp #cpp11
Имеется список unique_ptr. Можно ли, используя for_each пройтись по списку. Лямда в которую передаю элемент списка: auto researchRespawns = [&](Tank& tank) Ошибка: cannot convert argument 1 from 'std::unique_ptr' to 'Tank &' Я понимаю в чём дело, надо бы разыменовать элемент, но можно ли это сделать?
Ответы
Ответ 1
Передавайте ссылку на умный указатель и используйте её внутри лямбда-выражения: std::for_each(v.cbegin(), v.cend(), [] (const std::unique_ptr& tank) { // using tank... }); Либо если необходимо использовать именно указанное лямбда-выражение, то проще сделать так: for (auto& tank : v) { researchRespawns(*tank); } Можно немного извернуться и сделать даже так: std::for_each(v.begin(), v.end(), [researchRespawns] (std::unique_ptr & tank) { researchRespawns(*tank); });
Комментариев нет:
Отправить комментарий