我有一些指向对象的唯一指针的容器类。在deques之间移动唯一指针
我现在需要接受其中的一个,在不同的课堂上对他们做些什么,然后交给另一个班级(并在某个时间点回收它们并将其放回到容器中)。
下面是代码的概要。但是我收到用正确的方式来迷惑独特的移动与指针功能:
using uptrPod = unique_ptr<Pod>;
using dqUptrPods = deque<uptrPods>;
class Container {
public:
Container() :
n_elements_(500)
{
for (auto i = 0; i < n_elements_; i++) {
free_pods_.push_back(uptrPod(new Pod()));
}
const uptrPod&& getPod() {
auto up_pod= std::move(free_pods_[0]);
free_pods_.erase(free_pods_.begin());
return up_pod;
}
void returnPod(const uptrPod&& up_pod) {
free_pods_.push_back(up_pod);
}
private:
long n_elements_;
dqUptrPods free_pods_;
};
class PodTracker {
void addPod(const uptrPod&& up_pod) { dq_pods_.pushback(up_pod); }
dqUptrPods dq_pods_;
};
class PodHandler {
void movePod() {
up_pod = std::move(container_->getPod());
/// do stuff with pod
pod_tracker_->addPod(up_pod);
}
Container* container_;
PodTracker* pod_tracker_;
};
我收到错误:
cannot bind std::unique_ptr l value to const uptrPod&& { aka const std::unique_ptr &&
我如何用手绕类之间的指针?
这可能是值得解释说,'up_pod'仍然是一个左值,无论它的类型在一个右值参考:) – TartanLlama
,似乎很好地工作......非常感谢Vittorio – chrise