我不能在我的项目中使用 shared_ptr,没有提升 :(
所以,我有一个与下面的类(class)大致相似的类(class):
class MyClass
{
private:
std::auto_ptr<MyOtherClass> obj;
};
现在,我想将上述类的实例存储在 std::vector 中。安全吗?我 read here 将 std::auto_ptr 与 STL 容器一起使用是错误的。它适用于我这里的情况吗?
最佳答案
Assming 你的类没有用户定义的复制构造函数,那么不,它可能(见下文)不安全。当您的类被复制时(将其添加到 vector 时会发生这种情况),将使用 auto_ptr 的复制构造函数。这具有将被复制事物的所有权转移到拷贝的奇怪行为,因此被复制事物的指针现在为空。
虽然不太可能,但您可能真的想要这种行为,在这种情况下 auto_ptr 是安全的。假设你没有,你应该:
请注意,这还不够 - 有关更多信息,请参阅上面提到的后续问题。
或者:
关于c++ - 将 std::auto_ptr 作为其成员变量的类的对象存储在 std::vector 中是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/700588/