ошибка при использовании статического метода в лямбде

у меня есть 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 он компилируется.

0

Решение

Не могу воспроизвести.

Согласно ошибке («ошибка:« это »не было захвачено для этой лямбда-функции») my_method_1() не static,

Если my_method_1() это нестатический метод, вы можете использовать его внутри лямбда-захвата this по значению (это похоже на захват объекта по ссылке); что-то вроде

 //  v <- capture by value
[=](auto& element)
{ my_method_1(element); }

Если my_method_1() действительно static метод, пожалуйста, подготовьте минимальный, но полный пример, чтобы воспроизвести вашу проблему.

0

Другие решения

2 наблюдения:

  1. ваша функция статична, вы можете обратиться к ней как my_class::my_method_1()

  2. Вам не нужно использовать лямбду здесь, вы пробовали это?

    void my_class::my_method_2()
    {
    for (auto& element : my_list)
    my_method_1(element);
    }
    
0

По вопросам рекламы [email protected]