2015-03-13 8 views
5

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

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

ответ

8

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

+0

Возможно, вам стоит добавить слово о 'const A * a-> ~ A();' – Walter