2013-05-16 82 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