1

我有一个代码,当我在 cygwin 环境中构建它时,我收到与[&][&] 是什么意思相关的错误?我该如何解决这个问题,或者我用什么替换它才能使它工作?

代码:

this->func =[&]()
{ in here call other functions }
4

2 回答 2

4

语法是[capture-list](arguments){function-body}C++11 lambda。您需要一个相当新的编译器,并可能传递一个额外的编译器标志。

于 2013-05-16T09:41:48.657 回答
3

[&]{ /*function calls*/ }

这是一个 C++11 lambda 表达式,它创建一个调用其他函数的函数对象(闭包)。这[&]是 lambda 表达式的捕获,这意味着闭包可以通过引用使用 lambda 表达式之外的每个变量。您可能想阅读当前的 C++11 书籍或至少一篇关于 lambdas 的文章。

要解决您的问题,请尝试-std=c++0x作为编译器参数传递,如果这不起作用,请升级到当前编译器(您的编译器似乎早于 ~2 年),或者手动创建一个函数对象。一旦您了解了 lambda,如何做到这一点将是微不足道的。但是,如果您尝试编译的代码使用 lambda,那可能不是唯一的 C++11 功能,因此我强烈建议您升级编译器。

于 2013-05-16T09:43:04.743 回答