我在 Exception 类中遇到了 auto_ptr 问题,我最终将其简化为:
#include <memory>
class MyException
{
std::auto_ptr<int> m_foo2;
};
int main()
{
try
{
throw MyException();
}
catch (const MyException&)
{
}
return 0;
}
这无法编译:
/perforce/unstable/test/Common/Exceptions/TestException4.cpp:在函数'int main()'中:/perforce/unstable/test/Common/Exceptions/TestException4.cpp:12:错误:没有匹配的函数调用' MyException::MyException(MyException)' /perforce/unstable/test/Common/Exceptions/TestException4.cpp:4: 注意:候选人是: MyException::MyException() /perforce/unstable/test/Common/Exceptions/TestException4.cpp :4: 注意:MyException::MyException(MyException&) /perforce/unstable/test/Common/Exceptions/TestException4.cpp:12: 错误:在抛出的表达式中
如果我删除 auto_ptr,错误就会消失。
这是因为正在复制或分配异常吗?有没有办法auto_ptr
在异常中使用 s?