c++ - 在 lambda 表达式中调用方法

标签 c++ lambda c++11

我想在 lambda 表达式中调用我的类的方法:

void my_class::my_method(my_obj& obj)
{
}


void my_class::test_lambda()
{ 
   std::list<my_obj> my_list;

   std::for_each(my_list.begin(), my_list.end(), [](my_obj& obj)
   {
      // Here I want to call my_method:
      // my_method(obj);
   });
}

我该怎么办?

最佳答案

您需要显式或隐式捕获 this:

std::for_each(l.begin(), l.end(),
    [this](my_obj& o){ // or [=] or [&]
      my_method(o); // can be called as if the lambda was a member
    });

关于c++ - 在 lambda 表达式中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284059/

相关文章:

c++ - 从输入迭代器中获取最后一项

c# - 从列表中选择 Lambda 或 linq

c++ - 各种集合的模板类偏特化

c++ - 不要打印尾随定界符 stream_iterator C++

python - 排序的键值 lambda 不起作用

c++11 - 声明后定义lambda函数?

c++ - 为什么我的简单 C++ "What is your name?"程序不工作?

C++ stringstream 字符串转函数(test, char *test2)

c++ - '返回' : cannot convert from 'const class myClass' to 'class myClass &'

python - 使用 groupby 获取每组的最大众数