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

Ссылка подсчитала класс интеллектуального указателя, реализующий совместное владение
13

Когда используется std:: weak_ptr?

Я начал изучать интеллектуальные указатели С++ 11, и я не вижу полезного использования std::weak_ptr. Может ли кто-нибудь сказать мне, когда std::weak_ptr полезно/необходимо?
19 авг. '12 в 23:00
17

Как я могу вызвать:: std:: make_shared в классе с только защищенными или частными конструкторами?

У меня есть этот код, который не работает, но я думаю, что цель понятна: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: ...
16 нояб. '11 в 5:11
6

Разница в make_shared и normal shared_ptr в С++

std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); В нем есть много сообщений google и stackoverflow, но я не могу понять, почему make_shared более эффективен, чем напряму...
03 янв. '14 в 2:44
2

shared_ptr в массив: следует ли его использовать?

Просто небольшой запрос относительно shared_ptr. Хорошо ли использовать shared_ptr для массива? Например, shared_ptr<int> sp(new int[10]); Если нет, то почему бы и нет? Одна из причин, о которых я уже знаю, не может увеличивать/уменьшать з...
25 окт. '12 в 5:13
2

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

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

Почему работает std:: shared_ptr <void>

Я нашел некоторый код, используя std:: shared_ptr для выполнения произвольной очистки при завершении работы. Сначала я думал, что этот код не может работать, но затем я попробовал следующее: #include <memory> #include <iostream> #include...
06 мая '11 в 15:13
17

С++ - передача ссылок на std:: shared_ptr или boost:: shared_ptr

Если у меня есть функция, которая должна работать с shared_ptr, не было бы более эффективным передать ей ссылку на нее (чтобы избежать копирования объекта shared_ptr)? Каковы возможные плохие побочные эффекты? Я предполагаю два возможных случая: 1) ...
29 нояб. '08 в 14:27
3

std:: shared_ptr безопасность потока объясняется

Я читаю http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html, и некоторые проблемы безопасности потока все еще не ясны для меня: Стандарт гарантирует, что подсчет ссылок обрабатывается поточно-безопасным и независимым от платформы, не так...
03 февр. '12 в 11:19
4

Где shared_ptr?

Я так расстроен сейчас, после нескольких часов, пытаясь найти, где находится shared_ptr. Ни один из примеров, которые я вижу, не показывает полный код для включения заголовков для shared_ptr (и работы). Простое указание std, tr1 и <memory> не ...
27 мая '10 в 2:58
5

Зачем мне std:: переместить std:: shared_ptr?

Я просматривал исходный код Clang, и я нашел этот фрагмент: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Почему я хочу std::move a std::shared_ptr? Есть ли какая-...
26 янв. '17 в 10:11
3

Должен ли я передавать shared_ptr по ссылке?

Каковы наилучшие методы для передачи shared_ptr? В настоящее время я передаю аргументы функции shared_ptr следующим образом: void function1( shared_ptr<TYPE>& value );
05 дек. '11 в 12:40
2

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

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

Пример использования shared_ptr?

Привет, я задал сегодня вопрос о Как вставить различные типы объектов в один и тот же векторный массив, и мой код в этом вопросе был gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes ...
13 авг. '10 в 12:48
4

static_cast с boost:: shared_ptr?

Что эквивалентно static_cast с boost::shared_ptr? Другими словами, как мне переписать следующий Base* b = new Derived(); Derived* d = static_cast<Derived*>(b); при использовании shared_ptr? boost::shared_ptr<Base> b(new Derived());...
09 мар. '09 в 2:47
3

Разница между `const shared_ptr <T>` и `shared_ptr <const T>`?

Я пишу метод доступа для общего указателя на С++, который выглядит примерно так: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr<Bar> m_bar; } Таким образом, чтобы поддерживать...
22 июл. '13 в 17:05