Описание тега shared-ptr
Класс интеллектуального указателя с подсчетом ссылок, реализующий совместное владение
2
ответа
Получить общий указатель из разыменованного значения общего указателя
Представьте себе, что у вас есть вектор общих указателей typedef vector< shared_ptr< classA > > PointerVector; И класс B, который имеет в качестве члена вектор общих указателей, а также метод, который выталкивает обратно в этот вектор уж…
23 сен '17 в 18:15
1
ответ
Как использовать контейнер STL для хранения шаблонов на основе shared_ptr?
Я хочу создать контейнер для хранения shared_ptrs, которые основаны на шаблонах. Например, у меня есть: template <class T> class Data { .... }; template <class T> struct DataPtr { typedef boost::shared_ptr<Data<T> > type; }; …
06 фев '14 в 02:23
1
ответ
Оболочка C++/cli dll для нативного C++ для использования в LabView
Я пытаюсь написать оболочку C++/cli для IO Industries Core2 DVR, которая затем будет использоваться LabView. Компания предоставила SDK со всеми заголовками (написанными на C++) и библиотекой boost. Мне удалось создать оболочку, которая собирает, и L…
03 авг '18 в 14:55
2
ответа
Сброс вложенного умного указателя shared_ptr на shared_ptr (или unique_ptr), кажущийся парадоксом
Я знаю, что объект управляется std::shared_ptr не является delete д reset() если это не единственный shared_ptr который управляет этим в тот момент. Я знаю, что когда есть несколько shared_ptr При управлении одним и тем же объектом изменения значени…
05 ноя '14 в 02:12
3
ответа
Неявное преобразование из int в shared_ptr
Рассмотрим код ниже: #include <iostream> #include <memory> void f(std::shared_ptr<int> sp) {} template <typename FuncType, typename PtrType> auto call_f(FuncType f, PtrType p) -> decltype(f(p)) { return f(p); } int main() …
18 фев '15 в 16:37
0
ответов
intrusive_ptr, тесты производительности shared_ptr
class X { public: std::string name; int age; long references; X(string n, int a) : references(0), name(n), age(a) {} }; inline void intrusive_ptr_add_ref(X* x){ ++x->references; } inline void intrusive_ptr_release(X* x){ if(--x->references == …
12 фев '13 в 17:03
1
ответ
C++11 std::shared_ptr работает нормально, но boost::shared_ptr дает сбой, что может вызвать это?
У меня есть многопоточная программа (не могу воспроизвести ее здесь - это тысячи строк), которая прекрасно работает с C++11 (GCC 4.7.3) каждый раз, но не работает при использовании C++03 (с Boost 1,53). Конкретно подставляю std::atomic а также std::…
18 янв '14 в 06:34
1
ответ
Правильный способ создать thread_safe shared_ptr без блокировки?
Я пытаюсь создать класс с потокобезопасным shared_ptr. Мой пример использования заключается в том, что shared_ptr принадлежит объекту класса и ведет себя как единый объект (функция CreateIfNotExist может быть запущена любым потоком в любой момент вр…
03 окт '16 в 14:17
2
ответа
Basic - shared_ptr к вектору векторов значений
У меня есть вектор векторов объектов, содержащий всего несколько целых чисел. Внешний вектор содержит сотни векторов, которые содержат от тысячи до сотен тысяч объектов данных. Я использую библиотеку с большим количеством участия в shared_ptr, так ч…
29 мар '13 в 18:32
1
ответ
Как я могу исправить следующую ошибку "нет совпадения для вызова '(std:: tr1:: shared_ptr<_iobuf *>) (FILE * &)'"
Учитывая следующий код: #include <cstdio> #include <tr1/memory> // "tr1" is in order to fix it at Eclipse! using std::tr1::shared_ptr; class CannotOpenFileException: public std::exception { }; class FileOutput { shared_ptr<FILE*> f…
27 июн '18 в 09:51
2
ответа
Карта C++ STL, ключ которой - shared_ptr<struct tm>
Для одного из моих проектов мне нужно использовать shared_ptr, чтобы структурировать tm как ключ к карте STL. Ниже мой тестовый код. В цикле for существует два способа создания shared_ptr: 1) TmSPtr tm_ptr = std::make_shared(* tminfo); 2) TmSPtr tm_…
23 апр '15 в 02:23
2
ответа
Совместимость ABI между выпуском и отладкой
При использовании GCC, учитывая, что я компилирую одну и ту же библиотеку иногда в выпуске, а иногда в отладке, гарантируется ли совместимость ABI? (используя тот же компилятор) У меня есть исполняемый файл и некоторые общие объекты (некоторые завис…
31 май '16 в 14:19
0
ответов
Проблема с использованием компилятора Intel C++ 16, обновление 3, в 32-разрядной версии
Мне было интересно, сталкивался ли кто-то с той же проблемой, которую я обнаружил вчера. Я использую ICC 16 (Intel C++ компилятор 16.0, обновление 3) на VS 2015. Я строю в 32 бит. Обратите внимание, что эта проблема не возникает в 64 битах. Предполо…
11 апр '17 в 12:26
1
ответ
Не может вызвать функцию-член без объекта для вектора shared_ptr объекта
#include <boost/ref.hpp> //#include <boost/bind.hpp> #include <boost/shared_ptr.hpp> #include <boost/lambda/lambda.hpp> #include <boost/lambda/bind.hpp> #include <boost/mem_fn.hpp> using namespace std; using names…
31 мар '14 в 22:56
3
ответа
Умные указатели и конструкторы копирования
Насколько я понимаю, главная причина предоставления определяемого пользователем конструктора копирования заключается в том, что мы должны обеспечить глубокое копирование указателей на элементы данных. Означает ли это, что если мы заменим необработан…
01 апр '14 в 23:41
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
ответа
Как работает счетчик декремента умного указателя?
Ниже приведен пример кода для общего указателя. Я определяю общий указатель внутри области фигурных скобок. sp1 инициализируется новым A (счетчик = 1), а sp1 назначается sp2 (копирование и / или назначение увеличивают счетчик на 1, поэтому counter =…
03 июл '16 в 06:27
5
ответов
Получение shared_ptr для вызова функции-члена, когда ее счетчик ссылок достигнет 0
Я создаю оболочку для HANDLE, которая не работает с DuplicateHandle, поэтому вместо этого я пытаюсь обернуть ручку в shared_ptr. Представьте себе следующий код: class CWrapper { public: CWrapper() : m_pHandle(new HANDLE, &CWrapper::Close) { //co…
20 июн '10 в 11:48
1
ответ
Вызов shared_from_this() из производного в базовом классе дает std::bad_weak_ptr
У меня есть Базовый класс и Производный класс. API предоставляет только Derived, а реализация скрыта в Base (с атрибутом gcc visibility установлен в hidden), так как некоторые из внутренних модулей API должны вызывать базовые методы. Таким образом, …
19 май '14 в 09:37
2
ответа
Как я могу отслеживать время жизни объекта в C++11 лямбда?
Иногда нам ничего не известно о времени жизни лямбды, которая фиксирует состояние объекта (например, возвращает его из объекта, регистрирует как обратный вызов без возможности отписаться и т. Д.). Как убедиться, что лямбда не получит доступ к уже ун…
31 дек '14 в 12:18