gpt4 book ai didi

C++ 11 lambda作为成员变量?

转载 作者:IT老高 更新时间:2023-10-28 14:00:40 25 4
gpt4 key购买 nike

可以将 lambda 定义为类成员吗?

例如,是否可以使用 lambda 而不是函数对象来重写下面的代码示例?

struct Foo {
std::function<void()> bar;
};

我想知道的原因是因为以下 lambda 可以作为参数传递:

template<typename Lambda>
void call_lambda(Lambda lambda) // what is the exact type here?
{
lambda();
}

int test_foo() {
call_lambda([]() { std::cout << "lambda calling" << std::endl; });
}

我想如果 lambda 可以作为函数参数传递,那么也许它们也可以存储为成员变量。

经过更多修改后,我发现这行得通(但它有点毫无意义):

auto say_hello = [](){ std::cout << "Hello"; };
struct Foo {
typedef decltype(say_hello) Bar;
Bar bar;
Foo() : bar(say_hello) {}
};

最佳答案

lambda 只是创建一个函数对象,所以,是的,您可以使用 lambda 初始化一个函数成员。这是一个例子:

#include <functional>
#include <cmath>

struct Example {

Example() {
lambda = [](double x) { return int(std::round(x)); };
};

std::function<int(double)> lambda;

};

关于C++ 11 lambda作为成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6601930/

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