2013-05-16 83 views
1

我有一个代码,当我在cygwin环境中构建它时,我得到的错误与[&]有关[&]是什么意思?我如何解决这个问题,或者我用什么来替代它来使它工作?运算符[&]在C++

代码:

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

你试图使用什么版本的g ++? –

+0

不知道为什么它被低估。如果您误认为[&]为运营商,Google搜索将无助于您。 – MSalters

+1

我对你的问题进行了一些格式化处理,但它仍然符合SO标准的“不是真正的问题”。尝试修复它给更多的上下文和实际代码,确切的错误信息,编译器版本等... – jrok

回答

3

[&]{ /*function calls*/ }

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

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

+0

这正是错误和变暖说:”警告:lambda表达式仅适用于-std = C++ 11或-std = gnu ++ 11 [默认情况下启用]“...我会尝试永久升级! – Ana

+0

你会推荐什么样的网站升级? – Ana

+2

很奇怪gcc 3.4.4会告诉你关于gcc 4.7中引入的命令行参数。 –

4

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

+0

好的...我会尽力的。 “非常感谢 – Ana