Запитання з тегом «unique-ptr»

std :: unique_ptr - це розумний покажчик, який зберігає єдину власність на об’єкт через покажчик. унікальний_птр не піддається копіюванню або присвоєнню копії, два екземпляри унікального_птр не можуть керувати одним об’єктом.

6
Як передати аргумент унікального_ptr конструктору чи функції?
Я новачок, щоб перемістити семантику в C ++ 11, і я не знаю дуже добре, як обробляти unique_ptrпараметри в конструкторах або функціях. Розглянемо цей клас із посиланням на себе: #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); …

5
Повернення унікальних_ptr з функцій
unique_ptr<T>не дозволяє створювати копію, натомість підтримує семантику переміщення. Тим не менш, я можу повернути a unique_ptr<T>з функції і призначити повернене значення змінній. #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 

8
Чи потрібно std :: unique_ptr <T>, щоб знати повне визначення T?
Я маю код у заголовку, який виглядає приблизно так: #include &lt;memory&gt; class Thing; class MyClass { std::unique_ptr&lt; Thing &gt; my_thing; }; Якщо я включаю цей заголовок у cpp, який не включає Thingвизначення типу, то це не компілюється під VS2010-SP1: 1&gt; C: \ програмні файли (x86) \ Microsoft Visual Studio 10.0 …


2
Чому я не можу не повернути унікальний_ptr у вектор?
Що не так з цією програмою? #include &lt;memory&gt; #include &lt;vector&gt; int main() { std::vector&lt;std::unique_ptr&lt;int&gt;&gt; vec; int x(1); std::unique_ptr&lt;int&gt; ptr2x(&amp;x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } Помилка: 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&lt;_Tp&gt;::construct(_Tp*, const _Tp&amp;) …

6
make_unique та ідеальне переадресація
Чому std::make_uniqueв стандартній бібліотеці C ++ 11 немає шаблону функцій? я знайшов std::unique_ptr&lt;SomeUserDefinedType&gt; p(new SomeUserDefinedType(1, 2, 3)); трохи багатослівний. Не було б наступне набагато приємніше? auto p = std::make_unique&lt;SomeUserDefinedType&gt;(1, 2, 3); Це newдобре приховує і лише один раз згадує тип. У будь-якому випадку, ось моя спроба реалізації make_unique: template&lt;typename T, …

6
std :: unique_ptr з неповним типом не збирається
Я використовую ідіому pimpl з std::unique_ptr: class window { window(const rectangle&amp; rect); private: class window_impl; // defined elsewhere std::unique_ptr&lt;window_impl&gt; impl_; // won't compile }; Однак я отримую помилку компіляції щодо використання неповного типу в рядку 304 у &lt;memory&gt;: Недійсне застосування " sizeof" до неповного типу " uixx::window::window_impl" Наскільки я знаю, …

4
std :: auto_ptr to std :: unique_ptr
З новим стандартом (і деталі, які вже доступні в деяких компіляторах), новий тип std::unique_ptrповинен бути заміною std::auto_ptr. Чи точно їхнє використання перекривається (тому я можу зробити глобальний пошук / заміну свого коду (не те, що я б це зробив, але якби це зробив)) чи я повинен знати про деякі відмінності, …

2
Використання розумних покажчиків для учнів класу
У мене виникають проблеми з розумінням використання смарт-покажчиків як членів класу в C ++ 11. Я багато читав про розумні покажчики і, думаю, я розумію, як unique_ptrі shared_ptr/ weak_ptrв цілому працювати. Що я не розумію, це справжнє використання. Схоже, всі рекомендують використовувати unique_ptrяк шлях, який потрібно пройти майже весь час. …

6
Як використовувати користувацький делетер з членом std :: unique_ptr?
У мене клас з унікальним членом_ptr. class Foo { private: std::unique_ptr&lt;Bar&gt; bar; ... }; Штрих - це сторонній клас, який має функцію create () та знищити (). Якби я хотів використовувати це std::unique_ptrз ним у самостійній функції, я міг би: void foo() { std::unique_ptr&lt;Bar, void(*)(Bar*)&gt; bar(create(), [](Bar* b){ destroy(b); }); …



2
Чому shared_ptr <void> легальний, а unique_ptr <void> неправильно сформований?
Питання справді вкладається в заголовок: мені цікаво знати, в чому полягає технічна причина цієї різниці, а також обгрунтування? std::shared_ptr&lt;void&gt; sharedToVoid; // legal; std::unique_ptr&lt;void&gt; uniqueToVoid; // ill-formed;


7
Як я можу передати std :: unique_ptr у функцію
Як я можу передати a std::unique_ptrу функцію? Скажімо, у мене є такий клас: class A { public: A(int val) { _val = val; } int GetVal() { return _val; } private: int _val; }; Наступне не компілюється: void MyFunc(unique_ptr&lt;A&gt; arg) { cout &lt;&lt; arg-&gt;GetVal() &lt;&lt; endl; } int main(int argc, …
97 c++  c++11  unique-ptr 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.