我写下以下代码:
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
而不是返回内部计数?
答案 0 :(得分:4)
你没有打电话给它!确保你这样做:
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)函数中。
答案 1 :(得分:1)
我的代码片段的含义是否将
__lambda0
分配给static int count
而不是返回内部计数?
完全。要调用lambda,只需在末尾添加()
。
…
} ();