gpt4 book ai didi

c++ - STL 错误 : use of deleted function when sorting a vector of objects in C++

转载 作者:行者123 更新时间:2023-11-28 04:37:33 25 4
gpt4 key购买 nike

<分区>

我有一个带有私有(private) subview vector 的 View 类

class MyView {

private:
const std::vector<MySubView> subViews_;
}

在 subview 中我有这些方法:

class MySubView {
public:
const Id getId() const {
return id_;
}
const TimePoint getStartTime() const {
return startTime_;
}
private:
const Id id_;
const TimePoint startTime_;

}

现在,在 MyView 的构造函数调用的方法之一中,我生成了这个 subview 数组并对其进行了设置,效果很好。当我尝试在分配之前对其进行排序时,问题就来了。

static std::vector<MySubViews> buildLimitViews(
const ViewData& data);

当我尝试用这种方法构建 vector 后对其进行排序时。我看到错误。排序是这里唯一不起作用的部分。

std::vector<MySubView> buildLimitViews(
const ViewData& data) {
std::vector<MySubView> subViews;
//create views from data and push them in this vector, works fine.

// this sort block below does not work, causes errors.
std::sort(
subViews.begin(),
subViews.end(),
[](const MySubView& lhs,
const MySubView& rhs) {
if (lhs.getStartTime() == rhs.getStartTime()) {
return lhs.getId() < rhs.getId();
}
return lhs.getStartTime() < rhs.getStartTime();
});

return subViews;
}

如果我注释掉排序 block 它工作正常,否则我会看到这个错误:

error: use of deleted function 'MySubView& MySubView::operator=(MySubView&&)'

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