0

我有一个static方法my_method_1()my_class我正在尝试在 lambda 中使用它:

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 给我一个错误:

没有为此 lambda 函数捕获“this”

在 gcc4 中,它编译。

4

2 回答 2

0

无法重现。

根据错误(“错误:'this'没有为此 lambda 函数捕获”)my_method_1()不是static.

如果my_method_1()是非静态方法,则可以在this按值捕获的 lambda 中使用它(就像通过引用捕获对象一样);就像是

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

如果my_method_1()确实是一种static方法,请准备一个最小但完整的示例来重现您的问题。

于 2017-12-16T13:05:04.683 回答
0

2 观察:

  1. 您的功能是静态的,您可以将其称为my_class::my_method_1()

  2. 您不需要在这里使用 lambda,您尝试过吗?

    void my_class::my_method_2()
    {
        for (auto& element : my_list)
            my_method_1(element);
    }
    
于 2017-12-16T14:07:12.113 回答