Описание тега weak-ptr

NoneStd::weak_ptr is a smart pointer that holds a non-owning ("weak") reference to an object that is managed by std::shared_ptr
1 ответ

Отключить преобразование из std::weak_ptr в std::shared_ptr

Я знаю, что могу "продвигать" weak_ptr в shared_ptr как это: // std::weak_ptr<T> weak; std::shared_ptr<T> promoted(weak); У меня вопрос: можно ли это как-то предотвратить? В качестве упражнения я хотел создать собственную очень простую р…
30 июл '14 в 13:11
2 ответа

Как я могу отслеживать время жизни объекта в C++11 лямбда?

Иногда нам ничего не известно о времени жизни лямбды, которая фиксирует состояние объекта (например, возвращает его из объекта, регистрирует как обратный вызов без возможности отписаться и т. Д.). Как убедиться, что лямбда не получит доступ к уже ун…
31 дек '14 в 12:18
2 ответа

Лямбда захватывает эту и длительную функцию

У меня есть функция, которая требует много времени для запуска, но, к счастью, она работает асинхронно. Я хочу взять результат этого вызова функции и установить его в частную переменную экземпляра класса. Кажется легким: // Exists in some other libr…
1 ответ

Хранить слабый указатель на себя

Я работаю с базой кода, которая была частично реализована кем-то, кто был влюблен в слишком сложные решения простых проблем (например, шаблоны классов с двумя параметрами, которые когда-либо создавались только для одной пары типов). Одна вещь, котор…
26 июн '14 в 00:26
1 ответ

Как использовать слабый_птр в tbb::concurrent_unordered_map?

Я использую tbb::concurrent_unordered_map заменить std::map в моей программе так: Before: class KvSubTable; typedef std::weak_ptr<KvSubTable> KvSubTableId; std::map<KvSubTableId, int, std::owner_less<KvSubTableId> > mEntryMap; Тепе…
28 дек '17 в 03:28
3 ответа

Как я могу сделать это с помощью Smart Pointers?

Вот чего я пытаюсь достичь: #include <iostream> using std::cout; #include <vector> using std::vector; int main() { vector<int> a {3, 7}; int *p = &a.at (0); //assign 3 for (int i = 0; i < 10; ++i) //swap and print (3,7,3...)…
4 ответа

В чем проблема циклической зависимости с shared_ptr?

Я прочитал об общих указателях и понял, как использовать. Но я никогда не понимал проблему циклической зависимости с общими указателями и то, как слабые указатели будут решать эти проблемы. Кто-нибудь может объяснить, пожалуйста, эту проблему ясно?
05 мар '14 в 00:08
3 ответа

static_pointer_cast для слабых_птр

В C++0x есть std::static_pointer_cast для std::shared_ptr, но нет эквивалентного метода для std::weak_ptr. Это намеренно или недосмотр? Если недосмотр, как бы я определил соответствующую функцию?
19 май '11 в 23:26
2 ответа

Поиск слабого_потора после истечения срока действия shared_ptr

У меня есть структура, Aобъекты которого управляются shared_ptrs. Struct A содержит ссылку на структуру B, B объекты должны отслеживать, какие A объекты содержат ссылки на них, а также должны иметь возможность вернуть shared_ptrс этими объектами. Чт…
31 июл '18 в 21:29
1 ответ

Прерывание циклических ссылок с помощью std::weak_ptr и псевдонима конструктора: звучит или проблематично?

Я еще не нашел следующий способ разрыва циклических ссылок, описанный на каком-либо крупном форуме / блоге C++, например, на GotW, поэтому я хотел спросить, известна ли эта методика, и каковы ее плюсы и минусы? class Node : public std::enable_shared…
31 май '16 в 17:01
0 ответов

Ошибка компиляции при использовании boost::weak_ptr

#include <iostream> #include <boost/shared_ptr.hpp> using namespace std; using boost::shared_ptr; using boost::weak_ptr; int main() { shared_ptr<int> p(new int(5)); weak_ptr<int> q = p; if(shared_ptr<int> r = q.lock()) …
12 авг '16 в 14:35
1 ответ

Правильно ли я понял точку зрения Скотта Мейерса на std::weak_ptr?

Effective Modern C++ (стр. 136) использует следующий пример для мотивации std::weak_ptr, Кэш определяется как неупорядоченная карта со слабыми указателями на объекты в качестве значений. Всякий раз, когда клиенты этого кэша запрашивают объект (по кл…
19 июл '15 в 15:45
2 ответа

Доступ к weak_ptr после удаления исходного указателя

Я получаю ошибку во время выполнения при выполнении приведенного ниже кода: #include <iostream> #include <vector> #include <memory> using namespace std; class Test { public: int value; Test( ) { value = 1; } ~Test( ) { } }; int mai…
02 апр '14 в 21:18
0 ответов

Безопасно / не рекомендуется создавать общие указатели из слабого указателя

Вступление У меня есть два класса, которые я называю Node а также Point Вот. Точки - это объекты, которые содержат конкретную информацию (какая именно информация не имеет значения, я использую в примере простое целое число). Узлы - это объекты, кото…
05 ноя '18 в 16:50
5 ответов

Объект, хранящий не владеющую ссылку, которую необходимо проинформировать перед тем, как ссылка будет уничтожена

У меня есть класс по этой схеме: class Foo { public: // Create a Foo whose value is absolute Foo(int x) : other_(0), a_(x) {} // Create a Foo whose value is relative to another Foo Foo(Foo * other, int dx) : other_(other), a_(dx) {} // Get the value…
12 сен '13 в 21:35
2 ответа

Почему этот висячий std::weak_ptr не вызывает SEGFAULT?

В следующем коде я создаю shared_ptr в объеме и назначить его weak_ptr, Почему при запуске кода я не получаю SEGFAULT, потому что wp должен быть недействительным вне области, верно? namespace { struct Dummy { int x; void foo() { std::cout << "…
12 июл '18 в 01:27
2 ответа

Роль слабого_птр в общем_птр

Я понимаю, как работает shared_ptr, за исключением роли слабого_птр. Я понимаю, что это там, чтобы обнаружить циклические ссылки, когда счетчик ссылок не равен нулю, но кроме этого, я не понимаю, как именно это происходит. Что оно делает?
3 ответа

Простая ссылка вместо weak_ptr, чтобы сломать круговую зависимость

Взглянув на std::weak_ptr Я видел в нескольких местах, что он может быть использован для устранения утечек памяти из-за циклических зависимостей с помощью std::shared_ptr, См., Например, эти два принятых ответа: [1], [2]. Принимая последний ссылочны…
03 июл '18 в 10:42
1 ответ

Фильтрация контейнера ( std::vector) из std::shared_ptr в контейнер из std::weak_ptr

Я пытаюсь отфильтровать контейнер для shared_ptr и пытаюсь сохранить отфильтрованный контент в не принадлежащем ему контейнере ( of weak_ptr). Найденная ниже программа вылетает. Кто-нибудь может увидеть, что я скучаю? #include <memory> #includ…
15 май '14 в 05:28
2 ответа

Почему слабые указатели не используются чаще?

Вопрос Многие люди спрашивают: " Почему полезны слабые указатели? ". Для меня это не легкая задача, и я довольно смущен тем, почему они не используются чаще. Они являются наиболее близким эквивалентом семантики, к которой мы больше всего привыкли с…
11 мар '16 в 03:37