【发布时间】:2013-02-24 04:01:41
【问题描述】:
有什么方法可以防止用户使用
显式获取唯一指针的所有权 std::move
?
【问题讨论】:
-
也许你可以通过 const 引用来传递它。
-
你到底想做什么?用户如何访问
unique_ptr? -
@DarioOO 如果您不希望用户拥有任何所有权,请返回一个原始指针。
-
@DarioOO:呃,当你返回
unique_ptr时,根据定义,你给了它唯一的所有权。否则谁拥有它? -
@DarioOO 如果你不想放弃所有权,如果保证不为空,则通过引用返回;如果它可能为空,则通过原始指针返回(我上面给出的链接是关于明确不拥有其指针对象的“智能”指针的提议,出于文档目的,但它不在标准中)..一旦你返回
unique_ptr,你已经放弃了所有权,不管指针是否再次被移动,所以阻止std::move对你没有帮助
标签: c++ c++11 move-semantics unique-ptr