我有一个代码,当我在 cygwin 环境中构建它时,我收到与[&]
[&] 是什么意思相关的错误?我该如何解决这个问题,或者我用什么替换它才能使它工作?
代码:
this->func =[&]()
{ in here call other functions }
我有一个代码,当我在 cygwin 环境中构建它时,我收到与[&]
[&] 是什么意思相关的错误?我该如何解决这个问题,或者我用什么替换它才能使它工作?
代码:
this->func =[&]()
{ in here call other functions }
语法是[capture-list](arguments){function-body}
C++11 lambda。您需要一个相当新的编译器,并可能传递一个额外的编译器标志。
[&]{ /*function calls*/ }
这是一个 C++11 lambda 表达式,它创建一个调用其他函数的函数对象(闭包)。这[&]
是 lambda 表达式的捕获,这意味着闭包可以通过引用使用 lambda 表达式之外的每个变量。您可能想阅读当前的 C++11 书籍或至少一篇关于 lambdas 的文章。
要解决您的问题,请尝试-std=c++0x
作为编译器参数传递,如果这不起作用,请升级到当前编译器(您的编译器似乎早于 ~2 年),或者手动创建一个函数对象。一旦您了解了 lambda,如何做到这一点将是微不足道的。但是,如果您尝试编译的代码使用 lambda,那可能不是唯一的 C++11 功能,因此我强烈建议您升级编译器。