Jaki jest właściwy sposób przeniesienia własności na std::vector<unique_ptr<int> >
na konstruowaną klasę?Prawidłowy sposób przeniesienia własności std :: vector <std :: unique_ptr < int>> na konstruowaną klasę
Poniżej przedstawiono kodową reprezentację tego, co chcę zrobić. Rozumiem, że nie jest poprawne (nie skompiluje) i narusza "wyjątkowość", niezależnie od tego, czy przekazuję wektor do konstruktora przez wartość lub przez odniesienie. Chcę, aby Foo był nowym właścicielem wektora i chce, aby funkcja wywołująca zrzekła się prawa własności. Czy potrzebuję konstruktora do zrobienia tego?
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;
}
Każda pomoc będzie mile widziane - Mam prane netto szukasz właściwy sposób to zrobić. Dzięki!
'' std :: vector wymaga> albo tymczasowy lub wywołujący użycie 'std :: move' na własnym wektorze, ponieważ nie można go po prostu skopiować. Jeśli chcesz, aby było to naprawdę wyraźne, rozważ' std :: vector <...> && '. Następnie przejdź do swojego członka (w inicjatorach członków!) Za pomocą 'std :: move'. –
Xeo
Czy chcesz, aby wektor był unikatowy, czy zawarte w nim elementy? –
Lekkość wyścigów na orbicie - obie. – Jen