gpt4 book ai didi

C++ lambda - 捕获成员变量

转载 作者:IT老高 更新时间:2023-10-28 22:34:47 33 4
gpt4 key购买 nike

我有一个类,它有指向内核函数的函数指针,可以从外部改变。

class Bar 
{
public:
int i;
}

class Foo
{
public:
std::function<double()> kernel;
Bar bar;
};

int main()
{

Foo f;
f.kernel = []() -> double { return i * i; }; //this is not working obviously

}

我怎样才能实现“呈现”的行为,例如。读取 lambda 中的类变量。我可以通过在里面传递 f 并编写 f.bar.i 来绕过它,但这不是很好的解决方案。

最佳答案

在 C++14 中你可以写成,

f.kernel = [&i = f.bar.i]() -> double { return i * i; };

如果你没有 C++14,你也可以另外创建一个变量,

int &i = f.bar.i;
f.kernel = [&i]() -> double { return i*i; };

虽然传递 f 和写 f.bar.i 并没有什么问题。

关于C++ lambda - 捕获成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32922053/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com