[英]How to enqueue each element in a vector of unique pointers? (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>]'
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
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.