C++ lambda 表达式,编译通不过

Jenf_Mu 2013-02-04 02:03:13
	class A
{
int a, b;
public:
A():a(5),b(6)
{

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

}
}


写一个while判断条件函数,如果一直返回true,则while一直进行
...全文
232 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jenf_Mu 2013-02-04
  • 打赏
  • 举报
回复
class A
	{
		int a, b;
	public:
		A():a(5),b(6)
		{

		}
		void Print()
		{
			auto fun = 
				[this] () -> bool {
				cout<<a<<","<<b<<endl;
				return ((a++)+(b++))>20;
			};
			while (fun())
			{
			}
			
		}
	};

	void test()
	{
		A a;
		a.Print();
	}
我做了这样的修改,现在编译可以通过,但链接有问题 错误 2 error LNK1169: 找到一个或多个多重定义的符号 F:\Test\console_tests\Debug\for_console.exe 1 1 for_console
Kaile 2013-02-04
  • 打赏
  • 举报
回复
lambda语法不对吧
oN5GrzoN 2013-02-04
  • 打赏
  • 举报
回复
auto fun = [a, b]{ cout<<a<<","<<b<<endl; return (a++)+(b++)>20; }; while (fun()) { }
schlafenhamster 2013-02-04
  • 打赏
  • 举报
回复
编译时需要注意的是,VS要求版本在2010以上,编译时需要加上 /EHsc 参数。
IranCyberArmy 2013-02-04
  • 打赏
  • 举报
回复
[this]{ cout<<a<<","<<b<<endl; return (a++)+(b++)>20; })() 注意,运行函数,必须加()
oN5GrzoN 2013-02-04
  • 打赏
  • 举报
回复
你把C++ 的lambda表达式当JavaScript里的匿名函数啦 哪都可以定义

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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