Wikipedia似乎说C ++ 0x将支持匿名函数。 Boost似乎也支持它。但是我正在使用.NET,所以如果我能坚持下去就会很棒。
基本上我只是想为对象编写一些快速代码。我有一个机器人,可以有大约85-90个州。大多数状态只是“传递给机器人微控制器的整数值”。所以我告诉机器人去35状态。
然而,有些州需要额外的操作,例如用户输入,所以我想保持简单,只为差异编写几行代码。我考虑过使用派生类,但它涉及很多代码只是为了修改几行。
答案 0 :(得分:0)
如果用C ++。NET表示C ++ / CLI,那么是的。当MS在其c ++编译器中支持C ++ 0x lambda表达式时,该支持将扩展到C ++ / CLI。如果你想要lambda表达式 now ,那么你就会陷入Boost.Lambda。
答案 1 :(得分:0)
C ++ 0x lambda函数在C ++ / CLI中可用,随VC2010发布。但是,这些是本机C ++对象,不能用作C ++ / CLI委托。您还必须使用gcroot<>
传递.NET句柄。
答案 2 :(得分:-1)
匿名函数,或者称为Lambda Expressions或Delegates,是C#的语言特性,而不是.NET框架的一部分。我不认为微软已经为managed-C ++添加了匿名函数,而且我发现了一些似乎与我同意的comments。
不过不用担心。正如您所提到的,Boost.Lambda是一个可以使用的漂亮库。好的是它完全在头文件中实现为模板。所以,你所要做的就是包括标题。任何符合标准的C ++编译器都应该支持它。我理解你希望坚持你已有的东西,但下载和使用这些标题所需的努力应该是最小的。
如果你真的不想使用Boost,那么你可以尝试使用C#,但我建议你只试试Boost Lambda库。这可能比你想象的容易。