2015-05-26 6 views
4

Я хотел бы передать указатели на d вокруг от одного контейнера к другому. Ни в коем случае не будет более одного владельца указателя (или самого d). Мне бы хотелось, чтобы последний указатель вышел из области видимости, автоматически вызвал delete d.Использование unique_ptr без C++ 11

В C++ 11 я бы сделал это с помощью unique_ptr. Но, увы, я не могу использовать C++ 11. Каков наилучший эквивалент в C++? Boost в порядке. Или, если их нет, каков подходящий способ справиться с этим?

+2

«Мне бы хотелось, если последний указатель выходит за пределы области действия, удалите d автоматически.» Это не похоже на функциональность 'unique_ptr', но больше похоже на' shared_ptr'. – juanchopanza

+0

'shared_ptr' также является новым в C++ 11. Итак, в любом случае, если у вас нет компилятора C++ 11, вам нужно использовать Boost или аналогичную стороннюю библиотеку или написать свои собственные интеллектуальные указатели. –

+0

'uinque_ptr' очень похож на' shared_ptr', за исключением того, что он принимает одного владельца, поэтому указатель перемещается, а не копируется. –

ответ

4

Ну, boost::movelib::unique_ptr является частью Boost.Move library, который предлагает «Перенос семантики переноса для компиляторов C++ 03 и C++ 11». Поскольку unique_ptr явно нуждается в переносе семантики, это выглядит как ваш лучший выбор.

 Смежные вопросы

  • Нет связанных вопросов^_^