gpt4 book ai didi

c++ - 按值捕获成员变量

转载 作者:可可西里 更新时间:2023-11-01 16:30:37 24 4
gpt4 key购买 nike

在使用 C++11 lambda 表达式时,如何按值捕获成员变量?

使用[my_member]语法好像不行,隐式捕获使用this指针。需要的是一种显式指定成员变量捕获类型的方法。这可能吗?

我目前的解决方法是:

void member_function()
{
std::shared_ptr<my_member_class> my_member_copy = my_member; // this shouldn't be necessary
std::async([=]{ std::cout << *my_member_copy; });
// std::async([=]{ std::cout << *my_member_; }); // wrong, my member could be potentially out of scope
}

最佳答案

我认为您不能按值捕获成员,您可以捕获 this 但由于该成员是 this 的一部分,您将使用共享成员而不是新变量。

不知道您的成员(member)是什么类型,这样的事情应该可行:

auto copy = my_member;
std::async([copy]{ std::cout << copy; });

我不明白你为什么要在你的例子中使用 shared_ptr,如果你想按值捕获 shared_ptr 是你应该考虑的最后一件事。

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

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