![](/img/trans.png)
[英]C++ Lambda: Access static method in lambda leads to error 'this was not captured for this lambda function'
[英]error using static method in 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函數未捕獲“ 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); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.