Как перенести Deleter to Make_shared?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как перенести Deleter to Make_shared?

Сообщение Anonymous »

Со времен C ++ 11, по нескольким причинам, разработчики, как правило, используют классы Smart Pointer для динамических объектов жизни. И с этими новыми классами Smart Pointer, стандарты, даже предлагают не использовать операторы, такие как New вместо этого, они предлагают использовать make_shared или make_unique , чтобы избежать какой -либо ошибки. < /p>

Если мы любим использовать класс Smart Pointer, например, wared_ptr < /code>, мы можем построить один подобный, < /p>

shared_ptr p(new int(12));
< /code>

Также мы хотели бы перенести пользовательский Deleater к классам Smart Pointer, < /p>

shared_ptr p(new int(12), deleter);
< /code>

С другой стороны, если мы любим использовать make_shared < /code> для распределения, для бывшего. int , вместо использования нового и wared_ptr конструктор, как в первом выражении выше, мы можем использовать

auto ip = make_shared(12);
< /code>

Но что, если мы любим также передавать пользовательский Deteter to Make_shared < /code>, есть ли правильный способ сделать это? Похоже, компиляторы, по крайней мере, GCC, дает ошибку, < /p>

auto ip = make_shared(12, deleter);


Подробнее здесь: https://stackoverflow.com/questions/342 ... ake-shared
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»