在lambda中使用静态方法的错误



我在 my_class中有一个static方法my_method_1(),我试图在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函数

在GCC4中,它编译。

无法复制。

根据错误("错误:'此''未针对此lambda函数捕获")my_method_1()不是static

如果 my_method_1()是一种非静态方法,则可以在lambda中使用它在by value捕获 this(就像通过参考捕获对象一样);像

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

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

2观测:

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

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

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

相关内容

  • 没有找到相关文章

最新更新