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

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

Как передать аргумент unique_ptr конструктору или функции?

Я новичок в перемещении семантики в С++ 11, и я не очень хорошо знаю, как обрабатывать параметры unique_ptr в конструкторах или функциях. Рассмотрим этот класс, ссылающийся на себя: #include <memory> class Base { public: typedef uniqu...
13 нояб. '11 в 19:58
5

Возврат unique_ptr из функций

unique_ptr<T> не позволяет создавать копии, вместо этого поддерживает семантику перемещения. Тем не менее, я могу вернуть unique_ptr<T> из функции и присвоить возвращаемое значение переменной. #include <iostream> #include <mem...
30 нояб. '10 в 17:44
8

Является ли std:: unique_ptr <T> необходимым для определения полного определения T?

У меня есть код в заголовке, который выглядит так: #include <memory> class Thing; class MyClass { std::unique_ptr< Thing > my_thing; }; Если я включаю этот заголовок в cpp, который не включает определение типа Thing, то это не к...
16 мая '11 в 0:11
6

make_unique и совершенная переадресация

Почему в стандартной библиотеке С++ 11 нет шаблона функции std::make_unique? Я нахожу std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); немного подробный. Разве не было бы намного лучше? auto p = std::make_unique<...
12 авг. '11 в 9:46
4

std:: auto_ptr в std:: unique_ptr

С появлением нового стандарта (и частей, уже доступных в некоторых компиляторах), новый тип std::unique_ptr должен заменить std::auto_ptr. Их использование в точности совпадает (поэтому я могу выполнить глобальный поиск/замену в моем коде (не то, ч...
10 авг. '10 в 16:17
2

Почему я не могу push_back unique_ptr в вектор?

Что не так с этой программой? #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 com...
19 июл. '10 в 18:13
2

Использование интеллектуальных указателей для членов класса

У меня возникли проблемы с пониманием использования интеллектуальных указателей как членов класса в С++ 11. Я много читал о умных указателях, и я думаю, что понимаю, как работают unique_ptr и shared_ptr/weak_ptr. То, что я не понимаю, - это реальное...
26 мар. '13 в 22:46
4

std:: unique_ptr с неполным типом не будет компилироваться

Я использую pimpl-idiom с std::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; Однако я получаю ошибку компиляции ...
31 мар. '12 в 9:03
3

Различия между std :: make_unique и std :: unique_ptr с новым

Есть ли у std::make_unique какие-либо преимущества в эффективности, такие как std::make_shared? По сравнению с созданием вручную std::unique_ptr: std::make_unique<int>(1); // vs std::unique_ptr<int>(new int(1));
21 мар. '14 в 23:20
6

Как использовать пользовательский удаленный элемент с элементом std:: unique_ptr?

У меня есть класс с элементом unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... }; Панель является сторонним классом, который имеет функцию create() и функцию destroy(). Если бы я хотел использовать std::unique_ptr с н...
27 сент. '13 в 14:31
6

Копировать конструктор для класса с unique_ptr

Как реализовать конструктор копирования для класса с переменной unique_ptr? Я рассматриваю только С++ 11.
16 апр. '13 в 6:21
2

Почему shared_ptr <void> юридический, а unique_ptr <void> плохо сформирован?

Вопрос действительно соответствует названию: мне любопытно узнать, какова техническая причина этой разницы, но также и обоснование? std::shared_ptr<void> sharedToVoid; // legal; std::unique_ptr<void> uniqueToVoid; // ill-formed;
02 сент. '16 в 9:24
4

Зачем использовать std :: make_unique в С++ 17?

Насколько я понимаю, С++ 14 ввел std::make_unique потому что из-за того, что не был указан порядок оценки параметров, это было небезопасно: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Объяснение: если оценка сначала вы...
20 дек. '18 в 14:23
3

Как объявить std:: unique_ptr и как его использовать?

Я пытаюсь понять, как работает std::unique_ptr, и для этого я нашел этот документ. Автор начинается со следующего примера: #include <utility> //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr<int> u...
03 июн. '13 в 10:11
2

Гарантируется ли unique_ptr сохранение nullptr после перемещения?

Является ли unique_ptr гарантией сохранение nullptr после перемещения? std::unique_ptr<int> p1{new int{23}}; std::unique_ptr<int> p2{std::move(p1)}; assert(!p1); // is this always true?
05 июн. '14 в 13:37