我有在異常類auto_ptr的一個問題,那我最終簡化爲:爲什麼我不能有一個異常類一個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: 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
如果我刪除auto_ptr,錯誤消失。
這是因爲異常正在被複制或分配?在異常中有沒有使用auto_ptr
的方法?
哇,高質量的答案在這裏。一定是個好問題。 :) – sje397 2012-04-05 11:03:35