у меня есть static
метод my_method_1()
в my_class
и я пытаюсь использовать его в лямбде:
static void my_method_1(el);
void my_class::my_method_2()
{
std::for_each(my_list_.begin(), my_list_.end(),
[](auto& element)
{
my_method_1(element);
});
}
gcc6 выдает мне ошибку:
‘this’ не было захвачено для этой лямбда-функции
В gcc4 он компилируется.
Не могу воспроизвести.
Согласно ошибке («ошибка:« это »не было захвачено для этой лямбда-функции») my_method_1()
не static
,
Если my_method_1()
это нестатический метод, вы можете использовать его внутри лямбда-захвата this
по значению (это похоже на захват объекта по ссылке); что-то вроде
// v <- capture by value
[=](auto& element)
{ my_method_1(element); }
Если my_method_1()
действительно static
метод, пожалуйста, подготовьте минимальный, но полный пример, чтобы воспроизвести вашу проблему.
2 наблюдения:
ваша функция статична, вы можете обратиться к ней как my_class::my_method_1()
Вам не нужно использовать лямбду здесь, вы пробовали это?
void my_class::my_method_2()
{
for (auto& element : my_list)
my_method_1(element);
}