我写如下代码:

static int count = []()->int
                   {
                       int count = 0;

                       for(int i = 0; i < categories.size(); ++i)
                       {
                           if(!categories[i].isCategory())
                           {
                               count++;
                           }
                       }

                       return count;
                   };

并得到错误: error: cannot convert '__lambda0' to 'int' in initialization

我的代码片段的意思是将 __lambda0 分配给 static int count 而不是返回内部计数?

最佳答案

你不叫它!确保你这样做:

static int count = []()->int
                   {
                       int count = 0;

                       for(int i = 0; i < categories.size(); ++i)
                       {
                           if(!categories[i].isCategory())
                           {
                               count++;
                           }
                       }

                       return count;
                   }();
                 // ^^ THIS THIS THIS THIS

但是,恕我直言,您最好不要使用 lambda。如果您在代码的其他部分使用它,则将它放在独立(不是 lambda)函数中。

关于c++ - 用 C++ 中的 lambda 表达式初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22088553/

10-09 13:11