簡體   English   中英

在lambda中使用靜態方法時出錯

[英]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個觀察結果:

  1. 您的函數是靜態的,可以將其稱為my_class::my_method_1()

  2. 您不需要在這里使用lambda,您嘗試過嗎?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM