新手请教一个 问题

china34420 2014-04-10 03:21:41

void test1(const std::function<void()>& func){
func();
}
void test2(){
int counter = 0;
auto callback = [=]() mutable {
counter++;
if (counter == 5)
{
//完成
printf("over");
}
};

for (int i = 0; i < 5; i++)
{
printf("i = %d\n", i);
test1(callback);
}
}

像上面的代码,怎么样才能输出over,
不能将counter改为全局变量,谢谢
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
china34420 2014-04-11
  • 打赏
  • 举报
回复
引用 2 楼 u013432522 的回复:

void test1(const std::function<void()>& func){
    func();
}
void test2(){
        int counter = 0;
        auto callback = [&]() mutable {
            counter++;
            if (counter == 5)
            {
                //完成
                printf("over");
            }
        };
 
        for (int i = 0; i < 5; i++)
        {
            printf("i = %d\n", i);
            test1(callback);
        }
}
非常感谢
zideqiler 2014-04-10
  • 打赏
  • 举报
回复
You can capture by both reference and value, which you can specify using = and &: [&epsilon] capture by reference [&, epsilon] specify that the default way of capturing is by reference and what we want to capture [=, &epsilon] capture by value by default, but for epsilon use reference instead
zideqiler 2014-04-10
  • 打赏
  • 举报
回复

void test1(const std::function<void()>& func){
    func();
}
void test2(){
        int counter = 0;
        auto callback = [&]() mutable {
            counter++;
            if (counter == 5)
            {
                //完成
                printf("over");
            }
        };
 
        for (int i = 0; i < 5; i++)
        {
            printf("i = %d\n", i);
            test1(callback);
        }
}
ouyh12345 2014-04-10
  • 打赏
  • 举报
回复
static行不?

64,281

社区成员

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

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