gpt4 book ai didi

c++ - 如何编写带参数的 lambda 函数? C++

转载 作者:太空狗 更新时间:2023-10-29 23:35:57 25 4
gpt4 key购买 nike

我想调用一个方法(对于这个例子 std::thread 构造函数)使用 lambda 函数,传递 int 值:

int a=10;

std::thread _testThread = thread([a](int _a){
//do stuff using a or _a ?
});
_testThread.detach();

我不知道如何正确编写这样的函数,我得到这个错误:C2064: term 不计算为采用 0 个参数的函数

最佳答案

std::thread 接受一个可调用对象以及传递给它的任何参数。如果您不提供参数,std::thread 将尝试不带参数调用该对象,因此会出现错误。

如果你需要一个参数:

std::thread _testThread{[a](int _a) {
std::cout << a << ' ' << _a; //prints main's a, followed by somethingThatWillBe_a
}, somethingThatWillBe_a};

如果你只是想使用 maina,它已经被捕获了:

std::thread _testThread{[a] {
std::cout << a; //prints main's a
}};

如果您认为需要分离线程,我还建议您格外小心。如果有任何可能改为加入线程,那就去做吧。

关于c++ - 如何编写带参数的 lambda 函数? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536956/

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