【发布时间】:2010-10-13 21:04:47
【问题描述】:
当我有一个包含指针作为成员变量的类时,如果我不想使用普通指针,它们应该有什么类型的智能指针?它们不需要共享(因此不需要 shared_ptr)。 scoped_ptr 不起作用,因为我经常需要在初始化列表之外构建对象。
或者,当某些事情仍然可能失败(抛出异常等)时,在创建过程中使用 scoped_ptr 并随后将它们分配给普通指针是否可能是一种常见的做法?
【问题讨论】:
-
你能举个更具体的例子吗?
-
@Benjamin:为什么不让
ObjectB成为非指针成员? -
boost::optional可能更合适。听起来您需要的不是“指向动态分配对象的指针”,而是一种指定对象可能已创建或尚未创建的方法。 -
@Benjamin(对不起,我在您回复之前删除了该评论,我认为这无关紧要):我不明白为什么。您的整个应用程序不必在单个全局大师班内。你可以上不止一堂课。 ;)
-
不,一切都很好。这确实是我设计中的一个缺陷。非常感谢您带领我走上正确的道路:)
标签: c++ pointers shared-ptr smart-pointers scoped-ptr