我不能在我的项目中使用 shared_ptr,没有提升 :(
所以,我上的课与下面的课大致相似:
class MyClass
{
private:
std::auto_ptr<MyOtherClass> obj;
};
现在,我想将上述类的实例存储在 std::vector 中。安全吗?我有 read here在 STL 容器中使用 std::auto_ptr 是错误的。它适用于我这里的情况吗?
最佳答案
这是不安全的,因为当容器复制 MyClass instnace 时,默认复制运算符将为所有成员调用复制 - 并且也会为 auto_ptr 成员调用复制,我们将遇到与您在问题中描述的相同情况(将 auto_ptr 存储在容器中)
顺便说一句:为了避免在编译时混淆,添加
private:
MyClass& operator=( const MyClass& );
MyClass( const MyClass& );
如果您尝试使用复制运算符,编译器会输出错误,这可以让您免于数小时的调试。
关于c++ - 将具有 std::auto_ptr 作为其成员变量的类的对象存储在 std::vector 中是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/700588/