içeren std :: vektör yapıları ile bir sınıf bildirilirken hata C# ile birkaç yıl çalışmış olmasına rağmen, C++ 'da bazı şeyler yapmak benim için bazen zor. Akıllı göstergelerin kullanımını tamamen benimsiyorum, ancak şu anda aşağıdaki bulmaca ile karşılaşıyorum:std :: unique_ptr
Yapı Foo
, örn. Farklı sınıfta
struct Foo
{
Foo(std::unique_ptr<Bar> bar) : m_myBar(std::move(bar)) {}
private:
std::unique_ptr<Bar> m_myBar;
};
, ben Foo örneklerini içeren bir vektör olsun istiyorum, ama
std::vector<Foo> m_Foos;
verimleri derlemek aşağıdaki satır hataları kopya yapıcı silinir söyleyerek. SO iş parçacığı "Why can I not push_back a unique_ptr into a vector?" bir açıklama yanı sıra bir açıklama verilir. Bununla birlikte, burada benzersiz bir işaretçi içeren bir vektöre sahipken, benzersiz bir işaretçinin vektörü ile ilgili soru var. Önerilen çözüm, hareket anlambilim kullanmaktır, ancak bu durum benim durumumda nasıl geçerlidir? Yoksa başka bir şey mi yapmalıyım?
Visual Studio mu kullanıyorsunuz? – Angew
Hayır, Qt Creator 3.1.2 kullanarak Qt 5.3.1 tabanlı mingw32-make.exe ile kullanıyorum. Önemi var? – SimonAx
Hangi derleyici? Tamam, mingw gcc'yi farz ediyorum. Visual Studio'nun derleyicisi otomatik olarak hareket ctors oluşturamaz. Ama vektör hattının kendisi hataya neden olmaz, cevabımdaki bağlantıya bakın. Belki de bu sınıfın kopya cetvelini etkileyen bir sınıfa dahil mi? IOW, lütfen bir [MCVE] (http://stackoverflow.com/help/mcve) gönderin. – Angew