Maneira apropriada de transferir a propriedade de um std :: vector <std :: unique_ptr <int>> para uma classe que está sendo construída
Qual é a maneira correta de transferir a propriedade de umstd::vector<unique_ptr<int> >
para uma classe sendo construída?
Abaixo está uma representação do código do que eu quero fazer. Eu percebo que não é correto (não compilar) e viola a "singularidade" se eu passar o vetor para o construtor por valor ou por referência. Eu quero que Foo seja o novo proprietário do vetor e que a função de chamada renuncie à propriedade. Eu preciso do construtor para ter umstd::unique_ptr<std::vector<std::unique_ptr<int> > >
para fazer isso?
Foo.h
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;
}
Qualquer ajuda seria muito apreciada - vasculhei a rede procurando a maneira correta de fazer isso. Obrigado!