簡體   English   中英

Lambda如何捕獲結構的成員

[英]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;
}

http://ideone.com/Ws6KJX

答案是: 復制整個對象/結構 如果要處理需要深層復制的對象,則需要注意,否則可能會得到未初始化的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM