将带有lambda的std :: shared_ptr插入向量中

茉莉花

我有一个向量定义为:

std::vector<std::shared_ptr<Orders> > vOrders;

当添加到vOrders我想添加像:

vOrders.push_back(<std::shared_ptr<Orders> >([]() {
    TimerForProcessingOrders _timerForProcessingOrders;
    _timerForProcessingOrders.detach();
}));

但是编译器给我一个错误:

Expected expression: Expected '(' for function-style cast or type construction

看起来<>周围都很奇怪std::shared_ptr但是将其删除会出现错误:

No matching conversion for functional-style cast from '<lambda >' to 'std::shared_ptr<Orders>'

我犯什么错误?

比利·奥尼尔(Billy ONeal)

这段代码所做的(以一种不正确的方式)是将由lambda构造的对象,并将lambda本身存储到向量中,而不是shared_ptr<Order>向量所需要的类型的对象

但是编译器给我一个错误:

这是因为多余的< >是完全无效的语法,因此编译器可以为您提供的最好的是“无效的表达式”。

std :: shared_ptr周围的<和>看起来很奇怪,但是删除它会出现错误:
No matching conversion for functional-style cast from '<lambda >' to 'std::shared_ptr<Orders>'

基本上,这里是shared_ptr<Orders>(/* .. Lambda .. */)-编译器说它不知道如何将lambda变成anOrders*并放入其中shared_ptr

您实际上想在这里完成什么?

如果您只想将指针转移到中,则shared_ptr可以执行以下操作

TimerForProcessingOrders _timerForProcessingOrders;
std::shared_ptr<Orders> ptr(_timerForProcessingOrders.detach());
vOrders.emplace_back(std::move(ptr));

不需要lambda。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将现有的 shared_ptr 附加到 shared_ptr 的向量

来自分类Dev

将临时std :: shared_ptr插入std :: map中,这不好吗?

来自分类Dev

返回std :: shared_ptr的向量是否安全?

来自分类Dev

std::shared_ptr 向量指向的数据之间的线程同步

来自分类Dev

在lambda中锁定std :: shared_ptr的复制操作

来自分类Dev

将具有非const元素的shared_ptr的向量转换为具有const元素的shared_ptr的向量

来自分类Dev

std :: unordered_map插入错误shared_ptr C ++

来自分类Dev

std :: unordered_map插入错误shared_ptr C ++

来自分类常见问题

在C ++中,空std :: shared_ptr和空std :: shared_ptr有什么区别?

来自分类Dev

检查std :: shared_ptr中是否为null

来自分类Dev

替换std :: vector中的shared_ptr元素

来自分类Dev

Bison中的std :: shared_ptr导致成员错误

来自分类Dev

替换std :: vector中的shared_ptr元素

来自分类Dev

C++ 中 std::shared_ptr 数组的工作原理

来自分类Dev

QVariant与std :: shared_ptr

来自分类Dev

QVariant与std :: shared_ptr

来自分类Dev

向量迭代器不能用 std::shared_ptr<> 解引用

来自分类Dev

拥有std :: make_shared的std :: shared_ptr

来自分类Dev

没有对象的对象的shared_ptr的向量无法调用成员函数

来自分类Dev

我在链表实现中的std :: shared_ptr和std :: unique_ptr怎么办?

来自分类Dev

在构造函数中创建带有引用的boost :: shared_ptr

来自分类Dev

使用std :: move与std :: shared_ptr

来自分类Dev

Lambda Capture shared_ptr成员

来自分类Dev

std :: shared_ptr和继承

来自分类Dev

std :: shared_ptr深层复制对象

来自分类Dev

std :: function和shared_ptr

来自分类Dev

使用* this作为std :: shared_ptr

来自分类Dev

数据与memcpy的std :: shared_ptr分配

来自分类Dev

std :: shared_ptr预分配内存

Related 相关文章

热门标签

归档