Описание тега make-shared

NoneMake_shared - это функция для создания общих указателей, представленная в C++11.
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 ответ

Есть ли причина, по которой std::make_shared потребует конструктор по умолчанию?

Я пытаюсь выяснить, является ли это требованием от зерновых или нет. Я продолжаю получать сообщения о том, что Конструкторы класса (по умолчанию) являются частными, и я привел их по определенной причине. Однако исходная строка для ошибки, по-видимом…
3 ответа

Почему boost не имеет make_scoped()?

Повышение-х make_shared() функция обещает быть исключительной безопасностью при попытке создать shared_ptr, Почему нет make_scoped() эквивалент? Есть ли распространенная лучшая практика? Вот пример кода из boost::scoped_ptr документация, которая мне…
05 июл '12 в 02:46
2 ответа

Увеличить make_shared без аргумента шаблона

Я пытаюсь передать указатель на переменную стека в функцию (я не контролирую), которая принимает только boost::shared_ptr, Согласно этому ответу, используя boost::make_shared это путь Чтобы проверить эту функциональность, я написал это: #include &lt…
17 мар '17 в 17:59
1 ответ

C++ Предоставить конструктор списка инициализаторов для шаблона класса

У меня есть шаблон класса Templ с параметром шаблона T, а класс Templ имеет член данных типа T, называемый obj. Я написал шаблон конструктора переменной, который пересылает аргументы в конструктор obj: template <class T> class Templ { public: …
2 ответа

Что такое make_shared неизвестного размера?

В этом ответе ТС заявляет boost::make_shared и т. д. поддерживают типы массивов - либо с неизвестным размером, либо с фиксированным размером boost::shared_ptr<int[]> sh_arr2 = boost::make_shared<int[]>(30); boost::shared_ptr<int[30]&g…
18 янв '17 в 13:19
1 ответ

Как использовать make_shared для создания массива объектов одного типа?

Мы могли бы использовать "make_shared" для создания объекта быстрее и безопаснее по сравнению с использованием "new". Например, shared_ptr<Dog> p = make_shared<Dog>("Luther"). Если мне нужно создать массив объектов (например, Dog[3]), мо…
30 дек '18 в 19:31
1 ответ

Конструктор, принимающий shared_ptr

У меня такая ситуация struct Foo { Foo(int x, int y) : x(x), y(y) { } int x, y; }; class Bar { public: typedef std::shared_ptr<const Foo> ConstFooPtr; typedef std::shared_ptr<Foo> FooPtr; Bar(int index = 0, FooPtr ptr = FooPtr()) : index…
26 янв '15 в 22:45
1 ответ

std::bind вызов std::make_shared

Я пытаюсь создать функтор, который возвращает shared_ptr, вызывая std:: bind для std:: make_shared, но синтаксис за мной, или, возможно, это даже невозможно? Примерно так: при условии, что конструктор MyBar принимает константную ссылку на MyFoo: std…
08 мар '11 в 20:43
1 ответ

Реализация фабричной функции интерфейса C++

Контекстуализация: Я работаю над алгоритмом распознавания лиц, и NIST - это организация, которая пытается стандартизировать тесты, измерения и сравнения среди всех доступных алгоритмов. Для тестирования и сравнения мне нужно реализовать их интерфейс…
2 ответа

Странная ошибка при попытке сделать swap shared_ptr ()

Я относительный новичок в C++, пытающийся преобразовать существующий проект из необработанных указателей с запутанным протоколом управления памятью в использование C++11 shared_ptr, В целом все идет очень гладко, и я думаю, что понимаю, как shared_p…
23 сен '15 в 16:42
3 ответа

Был конструктор raw-указателя shared_ptr ошибкой?

Оглядываясь назад, учитывая make_shared, было бы shared_ptr есть конструктор, который принимает необработанный указатель, если он был введен в C++11? Есть ли веские аргументы или варианты использования в пользу этого конструктора? Это позволило бы и…
22 май '16 в 17:45
1 ответ

Использование make_shared с неполными типами

Я пытаюсь переключить свой код для использования make_shared<type>() но у меня есть много незавершенных типов (завершенных во время создания), и мне было интересно, будет ли make_shared работать с неполными типами или разрешить мне передать ти…
03 июн '12 в 20:40
1 ответ

C++11: make_shared не является членом std

Я пытаюсь обновить часть своего кода, и попытался включить make_shared, Я создал класс под названием Mail для отправки писем, теперь я попытался включить его: auto m = std::make_shared<Mail>(); Проблема в том, что я использую Makefile: SHELL =…
21 янв '15 в 11:53
1 ответ

Различия между make_unique и make_shared при обработке массивов

С C++17 вы можете использовать make_unique чтобы создавать умные указатели на массивы, такие как: unique_ptr<int[]> ptr = make_unique<int[]>(10); который создаст умный указатель на массив из 10 элементов (тот факт, что будет вызван надле…
30 авг '18 в 10:59
1 ответ

Инициализируйте std::array с помощью make_shared

Фон Я пишу драйвер для сетевого протокола и есть функция write(std::shared_ptr<package> package), где package является std::array<buffer_ptr,2> (0=> заголовок, 1=> тело). Для удобства хочу написать функцию write(buffer_ptr body), который…
01 апр '14 в 19:20
1 ответ

Как make_shared выделяет одну динамическую память для объекта менеджера и управляемого объекта

make_shared будет динамически выделять единицу памяти и, следовательно, улучшать производительность. Но как сделать одно выделение памяти, используя new как для управляемого объекта, так и для управляющего блока. Я хотел знать, как на самом деле про…
12 окт '16 в 18:20
0 ответов

Почему подписи make_shared и allocate_shared различаются для аргументов, которые нужно переслать?

Для того, чтобы создать std::shared_ptr для данного типа T Есть два пути среди других: std::allocate_shared а также std::make_shared, Основное отличие (или, по крайней мере, то, что меня интересует в этом вопросе) состоит в том, что первый делает вс…
1 ответ

Как передать указатель boost::shared_ptr в функцию protobuf?

Я должен пройти boost::shared_ptr: boost::shared_ptr<Protobuf::Person::Profile> pProfile = boost::make_shared<Protobuf::Person::Profile>(); который является указателем protobuf, на функцию protobuf oPerson.set_allocated_profile(pProfile)…
20 апр '17 в 08:23
0 ответов

std::forward и фабрика, которая вызывает std::make_shared

У меня есть такой код... X* raw = ::new X("abc"); // do something benign to object std::shared_ptr<X> ptr(raw); Теперь рассмотрим то же самое, используя объектную фабрику... template<typename T, typename... A> std::shared_ptr<T> fa…
31 июл '17 в 12:50