我在 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观测:
-
您的功能是静态的,您可以将其称为
my_class::my_method_1()
-
您不需要在这里使用lambda,您是否尝试过?
void my_class::my_method_2() { for (auto& element : my_list) my_method_1(element); }