std::vector<unique_ptr<int> >
構築中のクラスに aの所有権を譲渡する適切な方法は何ですか?
以下は、私がやりたいことのコード表現です。ベクトルをコンストラクターに値または参照で渡すかどうかは正しくなく (コンパイルされません)、「一意性」に違反していることに気付きました。Foo がベクターの新しい所有者になり、呼び出し元の関数が所有権を放棄するようにします。これを行うには、コンストラクターを使用する必要がありstd::unique_ptr<std::vector<std::unique_ptr<int> > >
ますか?
フー。
class Foo
{
public:
Foo(vector<std::unique_ptr<int> > vecOfIntPtrsOwnedByCaller);
private:
vector<std::unique_ptr<int> > _vecOfIntPtrsOwnedByFoo;
}
Foo.cpp
Foo::Foo(std::vector<std::unique_ptr< int> > vecOfIntPtrsOwnedByCaller)
{
_vecOfIntPtrsOwnedByFoo = vecOfIntPtrsOwnedByCaller;
}
どんな助けでも大歓迎です-私はこれを行う正しい方法を探してネットを精査しました。ありがとう!