yapılarak oluşturulmasının doğru bir yolunun aktarılması yolu std::vector<unique_ptr<int> >
'un sahipliğini oluşturulmakta olan bir sınıfa aktarmanın uygun yolu nedir?Bir std :: vektör <std :: unique_ptr < int>> mülkünün
Aşağıda, yapmak istediklerimin kod gösterimi verilmiştir. Doğru olmadığını (derlemeyeceğimi) ve “teklik” ini, vektörü yapıcıya değer veya referans olarak iletip geçirmediğimi fark ettim. Foo'nun vektörün yeni sahibi olmasını istiyorum ve çağrı işlevinin sahipliğinden vazgeçmesini istiyorum. Bunu yapmak için std::unique_ptr<std::vector<std::unique_ptr<int> > >
almak için kurucuya ihtiyacım var mı?
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;
}
Herhangi bir yardım çok takdir - Bunu doğru yol arıyoruz net dolaştılar ettik. Teşekkürler!
'std :: vector>' ya gerektirir geçici olarak veya arayan kişi, std :: move işlevini kendi vektörlerinde kullanamaz, çünkü sadece kopyalanamaz. Gerçekten açık yapmak istiyorsanız, std :: vector <...> && ''yi düşünün. Bundan sonra, üyenize (üye-başlatıcılarda!) “Std :: move” ile ilerleyin. –
Xeo
Vektörün benzersiz olarak sahip olunmasını mı yoksa burada bulunan öğeleri mi istiyorsunuz? –
Yörüngedeki Hafiflik Yarışları - Her ikisi. – Jen