维基百科似乎说 C++0x 将支持匿名函数。Boost似乎也支持它。但是我正在使用.NET,所以如果我能坚持下去,那就太棒了。
基本上我只想为对象编写一些快速代码。我有一个机器人,它可以有大约 85 - 90 个状态。大多数状态只是“传递给机器人微控制器的整数值”。例如,我告诉机器人进入状态 35。
然而,有些状态需要额外的操作,比如用户输入,所以我想保持简单,只写几行代码来解决这些差异。我考虑过使用派生类,但它涉及大量代码,只是为了修改几行。
如果 C++.NET 你的意思是 C++/CLI,那么是的。当 MS 在其 c++ 编译器中支持 C++0x lambda 表达式时,该支持将扩展到 C++/CLI。如果你现在想要 lambda 表达式,那么你会被 Boost.Lambda 困住。
随着 VC2010 的发布,C++/CLI 中提供了 C++0x lambda 函数。但是,这些是本机 C++ 对象,不能用作 C++/CLI 委托。您还必须使用gcroot<>
传递 .NET 句柄。
匿名函数,也称为Lambda 表达式或委托,是 C# 的语言功能,而不是 .NET 框架的一部分。我不认为微软在托管 C++ 中添加了匿名函数,而且我发现了一些似乎同意我的评论。
不过不用担心。正如您所提到的,Boost.Lambda是一个您可以使用的漂亮库。好的是它完全在标题中作为模板实现。因此,您所要做的就是包含标题。任何符合标准的 C++ 编译器都应该支持它。我理解您希望坚持现有内容的愿望,但下载和使用这些标头所需的工作量应该很小。
如果您真的不想使用 Boost,那么您可以尝试使用 C#,但我建议您只尝试 Boost Lambda 库。这可能比您想象的要容易。