我的代码是这样的:
struct foo {
int first;
int second;
};
void func(foo& A) {
Schedule([=]()
{
DoWork(A.first, A.second)
});
}
lambda 是按值捕获对结构的引用还是按值捕获 .first 和 .second?
谢谢,
最佳答案
采用以下代码:
#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;
}
答案是:复制了整个对象/结构。如果您正在处理需要深拷贝的对象,您需要注意,否则您可能会得到未初始化的数据。
关于c++ - lambda如何捕获结构的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005248/