«unique-ptr» etiketlenmiş sorular

std :: unique_ptr, bir nesnenin tek sahipliğini bir işaretçi aracılığıyla tutan akıllı bir göstericidir. unique_ptr kopyalanamaz veya kopyalanamaz, iki unique_ptr örneği aynı nesneyi yönetemez.

6
Unique_ptr bağımsız değişkenini bir yapıcıya veya işleve nasıl iletirim?
C ++ 11'de anlambilimi taşımak için yeniyim ve nasıl işleneceğini çok iyi bilmiyorum unique_ptr yapıcılarda veya işlevlerde parametrelerin . Bu sınıfın kendisine atıfta bulunmayı düşünün: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr …

5
Unique_ptr işlevlerinden döndürülüyor
unique_ptr<T>kopya oluşturmaya izin vermez, bunun yerine taşıma semantiğini destekler. Yine de, unique_ptr<T>bir işlevden bir geri dönebilir ve döndürülen değeri bir değişkene atayabilirim. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p ); // 2 } int main() …
367 c++  c++11  unique-ptr 



2
Neden unique_ptr öğesini bir vektör içine itemiyorum?
Bu programda sorun nedir? #include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } Hata: In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64, from main.cpp:6: c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp …

6
make_unique ve mükemmel yönlendirme
std::make_uniqueStandart C ++ 11 kitaplığında neden işlev şablonu yok ? buldum std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); biraz ayrıntılı. Aşağıdakiler çok daha hoş olmaz mıydı? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); Bu newgüzel gizler ve sadece bir kez türü bahseder. Her neyse, işte benim uygulama girişimim make_unique: template<typename T, typename... Args> …

6
std :: unique_ptr ile eksik tip derlenmez
Ben pimpl-deyim ile kullanıyorum std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Ancak, eksik bir tür kullanımı ile ilgili derleme hatası alıyorum, satır 304 <memory>: ' sizeof' Eksik bir tür ' uixx::window::window_impl' için geçersiz uygulama Bildiğim kadarıyla, std::unique_ptreksik tip …

4
std :: auto_ptr - std :: unique_ptr
Yeni standart geldiğinde (ve bazı derleyicilerde zaten mevcut olan parçalar), yeni tipin std::unique_ptryerini alması gerekiyor std::auto_ptr. Kullanımları tam olarak örtüşüyor mu (böylece kodum üzerinde küresel bir bulma / değiştirme yapabilirim (bunu yapmam değil, ama yaptım)) veya belgeleri okumadan belirgin olmayan bazı farklılıkların farkında olmalı mıyım? Ayrıca doğrudan bir yedek ise, …

2
Sınıf üyeleri için akıllı işaretçiler kullanma
C ++ 11 sınıf üyeleri olarak akıllı işaretçi kullanımını anlamakta sorun yaşıyorum. Akıllı işaretçiler hakkında çok şey okudum unique_ptrve genel olarak nasıl ve shared_ptr/ nasıl weak_ptrçalıştığını anladığımı düşünüyorum . Anlamadığım şey gerçek kullanımdır. Herkesin unique_ptrneredeyse her zaman gitmek için bir yol olarak kullanılmasını önerdiği görülüyor . Ama böyle bir şeyi …

6
Bir std :: unique_ptr üyesiyle özel bir siliciyi nasıl kullanabilirim?
Unique_ptr üyesi olan bir sınıfım var. class Foo { private: std::unique_ptr<Bar> bar; ... }; Bar, create () işlevi ve destroy () işlevi olan üçüncü taraf bir sınıftır. Onunla std::unique_ptrbağımsız bir işlevde kullanmak isteseydim şunları yapabilirdim: void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); ... } Bunu std::unique_ptrbir sınıfın …





6
C ++ 17'de neden std :: make_unique kullanılıyor?
Anladığım kadarıyla, C ++ 14 tanıtıldı std::make_uniqueçünkü parametre değerlendirme sırasının belirtilmemesi nedeniyle bu güvenli değildi: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Açıklama: Eğer değerlendirme önce hafızayı ham işaretçi için ayırırsa, sonra çağırır g()ve yapımdan önce bir istisna atılırsa std::unique_ptr, hafıza sızdırılır.) Arama std::make_unique, arama sırasını kısıtlamanın bir yoluydu ve böylece …
98 c++  c++17  unique-ptr 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.