std::auto_ptr 缺少 const 复制构造函数,因此我不能直接在集合中使用它。有没有办法在不使用提升指针集合模板的情况下获得例如 std::auto_ptr 的向量?
问问题
4006 次
3 回答
2
不,你不能有 的向量std::auto_ptr
,尽管有很多猜测你可以。但是,如果您的编译器支持 C++0x,您可以使用std::unique_ptr
,这是已弃用的自动指针的新替代方案,引用新标准,它提供了更好的替代方案。另请参阅此线程
于 2010-10-19T19:14:15.860 回答
1
auto_ptr 设计用于在变量离开范围时自动删除。您不想在集合中使用它,而是如上所述您想使用 shared_ptr 之类的东西。
auto_ptr 的典型使用示例:
void foo()
{
auto_ptr<int> bar = auto_ptr<int>(new int);
...
return; //memory held by auto_ptr is automatically deleted
}
如果您不确定 auto_ptr 的特殊语义,则超出此用途的任何内容都有潜在的危险和/或损坏。(编辑:根据Armen的评论澄清)
于 2010-10-19T19:17:16.163 回答