在lambda中使用静态方法时出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在lambda中使用静态方法时出错相关的知识,希望对你有一定的参考价值。
我在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中,它编译。
答案
无法重现。
根据错误(“错误:'这个'没有捕获这个lambda函数'”)my_method_1()
不是static
。
如果my_method_1()
是一个非静态方法,你可以在lambda中使用它来捕获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); }
以上是关于在lambda中使用静态方法时出错的主要内容,如果未能解决你的问题,请参考以下文章
Android:在drawerlayout中使用地图膨胀片段时出错