日期:2014-05-16  浏览次数:20391 次

问一个关于C++lambda表达式的问题
为什么C++的lambda表达式来JavaScript区问呢?因为lambda表达式在C++里也是新标准,好多人都不熟。但是JavaScript的匿名函数大家都懂。这个东西有点类似JavaScript里的匿名函数啦

	class A
{
int a, b;
public:
A():a(5),b(6)
{

}
void Print()
{
while ([this]{
cout<<a<<","<<b<<endl;
return (a++)+(b++)>20;
})
{
}
/*

这里定义了一个匿名函数
[this]{
cout<<a<<","<<b<<endl;
return (a++)+(b++)>20;
}
如果是JavaScript,想要直接运行这段代码直接在最后加一个()即可

[this]{
cout<<a<<","<<b<<endl;
return (a++)+(b++)>20;
}()

但C++怎么办呢?
*/

}
}

------解决方案--------------------
auto fun = 
[a, b]{
cout<<a<<","<<b<<endl;
return (a++)+(b++)>20;
};
while (fun())
{
}