我写如下代码:
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/