我想將名稱空間變量傳遞給lamba並獲取從lamba函數遞增的變量。在lamba中捕獲命名空間變量
這是我的計劃
// Example program
#include <iostream>
#include <string>
#include <functional>
using namespace std;
namespace np
{
int data = 0;
}
int data1 = 0;
int main()
{
// cout << np::data <<endl; // compiler error :unable to capture the variable within namepspace
// [&np::data](){ np::data++;};
// cout << np::data <<endl;
cout << data1 <<endl; //unable to increment the global variable from lamba
[&data1](){ data1++;};
cout << data1 <<endl;
}
我有兩個問題:1。 爲什麼我無法從增量蘭巴全局變量? 2.爲什麼lambda無法捕獲名稱空間內的變量?
嘗試此代替:\t汽車值= [&]() \t { \t \t NP ::數據++; \t};值();現在數據的價值將會增加。要回答你的第一個問題:一個具有靜態存儲持續時間的變量不能在lambda中被捕獲 – Asesh
你有一個lambda表達式,但是你沒有調用它的結果,所以顯然它的代碼永遠不會執行。順便說一句,沒有必要明確捕捉全局變量。 –
你永遠不會調用這個lambda。 – Vivick