如何解决如何将每个元素排入唯一指针向量中? (C++)
我正在尝试将唯一指针向量的每个元素推送到队列中,但由于某种原因我的代码无法编译。
我得到的错误是:error: use of deleted function ‘std::unique_ptr<_Tp,_Dp>::unique_ptr(const std::unique_ptr<_Tp,_Dp>&) [with _Tp = Foo; _Dp = std::default_delete<Foo>]’
。
由于我将唯一指针的向量移动到 enqueue
函数中,并再次将每个元素移动到 queue_
中,我不确定为什么这不起作用。
#include <memory>
#include <vector>
#include <queue>
class Foo {};
class Bar {
public:
template<typename Container>
void enqueue(Container c) {
for (const auto &e : c) {
queue_.push(std::move(e));
}
};
private:
std::queue<std::unique_ptr<Foo>> queue_;
};
int main() {
Bar bar;
std::vector<std::unique_ptr<Foo>> c;
c.push_back(std::make_unique<Foo>());
bar.enqueue(std::move(c)); // this line is causing problem
};
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。