Tôi có một vấn đề với auto_ptr trong các lớp ngoại lệ, mà tôi thậm chí giảm xuống còn:Tại sao tôi không thể có một auto_ptr trong một lớp ngoại lệ
#include <memory>
class MyException
{
std::auto_ptr<int> m_foo2;
};
int main()
{
try
{
throw MyException();
}
catch (const MyException&)
{
}
return 0;
}
này thất bại trong việc biên dịch với:
/perforce/unstable/test/Common/Exceptions/TestException4.cpp: In function 'int main()': /perforce/unstable/test/Common/Exceptions/TestException4.cpp:12: error: no matching function for call to 'MyException::MyException(MyException)' /perforce/unstable/test/Common/Exceptions/TestException4.cpp:4: note: candidates are: MyException::MyException() /perforce/unstable/test/Common/Exceptions/TestException4.cpp:4: note: MyException::MyException(MyException&) /perforce/unstable/test/Common/Exceptions/TestException4.cpp:12: error: in thrown expression
Và lỗi sẽ biến mất nếu tôi xóa auto_ptr.
Đây có phải là do ngoại lệ được sao chép hoặc gán không? Có cách nào để sử dụng auto_ptr
s trong Ngoại lệ không?
Câu trả lời chất lượng cao, tuyệt vời tại đây. Phải là một câu hỏi hay. :) – sje397