C++11 the lambda has no capture-default 参数未捕获

weixin_38186178 2017-05-10 07:56:35
本人刚刚开始学C++,编译时发生参数未捕获错误main.cpp:53:83: error: ‘param’ is not captured,不知道是为什么?还请专家指点




namespace {
class test
{
public:
test();
test(int ID);
~test();
using(std::function<void(int)>callback, std::string , std::string , std::string , std::string , int );
...
};
}


std::vector<std::string> param;
std::vector<std::shared_ptr<test>> testList;
...
std::function<void(int)> callback = (int ID) {
testList[ID]->using(callback, param[0], param[1], param[2], param[3], atoi(param[4].c_str()));
};



for(auto& test: testList)
{
test->using(callback, param[0], param[1], param[2], param[3], atoi(param[4].c_str()));

}
...全文
1361 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FD_2013 2017-05-11
  • 打赏
  • 举报
回复
有些特性虽好,但还是不要乱用,把程序搞的晦涩难懂
FD_2013 2017-05-11
  • 打赏
  • 举报
回复
还有你这个using函数名起的是不是跟关键字 using冲突了
FD_2013 2017-05-11
  • 打赏
  • 举报
回复

//可以修改vector中的元素
std::function<void(int)> callback =[&] (int ID) {
        testList[ID]->using(callback, param[0], param[1], param[2], param[3], atoi(param[4].c_str()));
};
//值传递
std::function<void(int)> callback =[=] (int ID) {
        testList[ID]->using(callback, param[0], param[1], param[2], param[3], atoi(param[4].c_str()));
};
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
引用 2 楼 jianwen0529 的回复:
增加捕获列表 [param](int ID) //捕获外部对象param,以传值的形式 [a,&b] a变量以值的方式呗捕获,b以引用的方式被捕获。 [this] 以值的方式捕获 this 指针。 [&] 以引用的方式捕获所有的外部自动变量。 [=] 以值的方式捕获所有的外部自动变量。 [] 不捕获外部的任何变量。
二楼此处注解有误。
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
引用 1 楼 weixin_38186178 的回复:
再次求助,求各位专家帮忙...
增加捕获列表 [param](int ID) //捕获外部对象param,以传值的形式
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
增加捕获列表 [param](int ID) //捕获外部对象,所有为引用 [a,&b] a变量以值的方式呗捕获,b以引用的方式被捕获。 [this] 以值的方式捕获 this 指针。 [&] 以引用的方式捕获所有的外部自动变量。 [=] 以值的方式捕获所有的外部自动变量。 [] 不捕获外部的任何变量。
weixin_38186178 2017-05-11
  • 打赏
  • 举报
回复
再次求助,求各位专家帮忙...

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧