私はオブジェクトへのいくつかのユニークなポインタのコンテナクラスを持っています。dequeの間のユニークなポインタの移動
私は今、それらの1つを持って、別のクラスで何かをして、別のクラスに引き渡す必要があります(ある時点で、それらをリサイクルしてコンテナに戻す必要があります)。
以下はコードの概要です。しかし、私は機能とユニークなポインタを移動するための正しい方法で混乱しています:
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
:)右辺値参照を入力するのかどうかのさらに左辺値である 'ことを説明する価値があるかもしれません...おかげで多くのヴィットリオ – chrise