Вопросы с тегом «unique-ptr»

std :: unique_ptr - это умный указатель, который сохраняет исключительное право собственности на объект через указатель. unique_ptr не подлежит копированию или назначению для копирования, два экземпляра unique_ptr не могут управлять одним и тем же объектом.

6
Как передать аргумент unique_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
Возвращение unique_ptr из функций
unique_ptr<T>не позволяет создавать копии, вместо этого он поддерживает семантику перемещения. Тем не менее, я могу вернуть функцию 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 } …
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: \ Program Files (x86) \ Microsoft Visual Studio …

17
Есть ли какое-либо использование для unique_ptr с массивом?
std::unique_ptr имеет поддержку массивов, например: std::unique_ptr&lt;int[]&gt; p(new int[10]); но нужно ли это? Вероятно, это более удобно для использования std::vectorили std::array. Нашли ли вы какую-либо пользу для этой конструкции?

2
Почему я не могу push_back уникальный_птр в вектор?
Что не так с этой программой? #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 в std :: unique_ptr
С появлением нового стандарта (и частей, уже доступных в некоторых компиляторах), новый тип std::unique_ptrдолжен заменить его std::auto_ptr. Их использование в точности совпадает (поэтому я могу выполнить глобальный поиск / замену в моем коде (не то, чтобы я это делал, но если бы я это сделал)) или я должен знать о …

2
Использование умных указателей для учеников
У меня проблемы с пониманием использования умных указателей в качестве членов класса в C ++ 11. Я много читал об умных указателях и думаю, что понимаю, как unique_ptrи shared_ptr/ или weak_ptrработаю в целом. То, что я не понимаю, является реальным использованием. Кажется, что все рекомендуют использовать unique_ptrкак способ идти почти …

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




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 в функцию
Как передать 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, char* argv[]) { …
97 c++  c++11  unique-ptr 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.