std::unique_ptr для передачи права собственности на константный объект

У меня есть объект класса A, созданный внутри метода. Этот метод также создает экземпляр объекта B, который принимает в качестве аргумента конструктора только что созданный объект A. B должен стать владельцем объекта A, но не может его изменить. Это означает, что A должен быть удален при удалении B, но в течение жизни B он не может изменить A.

В этом случае std::unique_ptr<const A> в качестве переменной-члена B - это правильный способ передать право собственности на A (используя std::move в конструкторе B) и гарантировать, что он не будет изменен?


person gcswoosh    schedule 13.03.2015    source источник


Ответы (1)


Да, это именно та семантика, которую вы ищете. std::unique_ptr<T> заявляет: «Я владею объектом T». Указатель (необработанный или интеллектуальный) на const A указывает: «Я не могу изменить A, на который я указываю». В совокупности это именно то, что вам нужно.

person Angew is no longer proud of SO    schedule 13.03.2015
comment
Возможно, вам стоит добавить пару слов о const A*a->~A(); - person Walter; 21.03.2015