[英]How does lambda capture member of a struct
我的代碼是這樣的:
struct foo {
int first;
int second;
};
void func(foo& A) {
Schedule([=]()
{
DoWork(A.first, A.second)
});
}
lambda是按值捕獲對結構的引用還是按值捕獲.first和.second?
謝謝,
按值,如果要通過引用捕獲,則為[&]
如果要通過引用捕獲a值,並通過ref捕獲b,請輸入[a,&b]
采取以下代碼:
#include <iostream>
using namespace std;
class NeedDeepCopy
{
public:
NeedDeepCopy()
{
};
NeedDeepCopy(const NeedDeepCopy& other)
{
data = new int[1];
data[0] = 0x90;
}
int *data;
};
void func(NeedDeepCopy& obj) {
auto lambda = [=]() mutable
{
if(*obj.data == 0x90)
cout << "0x90 - a copy was made";
};
if(*obj.data == 0x88)
cout << "Original value is 0x88" << endl;
lambda();
}
int main() {
NeedDeepCopy obj;
obj.data = new int[1];
*obj.data = 0x88;
func(obj);
// your code goes here
return 0;
}
答案是: 復制整個對象/結構 。 如果要處理需要深層復制的對象,則需要注意,否則可能會得到未初始化的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.