-1
我有一个很大的问题。当我抛出异常或调用std :: terminate或std :: exit时,对象析构函数不会运行。那么这就是问题所在,我的代码充满了这个语句,因为我在想这个语句正在调用析构函数。如何调用所有析构函数?
我该如何解决这个问题?我不能改变类的结构,我有10K的代码和许多类。
void Function(int Stage)
{
switch (Stage)
{
case 0:
//Somehow call the destructors
break;
case 1:
//initialize
break;
default:
//Give an error message and call the destructors
}
}
什么样的对象?他们是如何构建的?你怎么知道析构函数没有被调用?请使用[MCVE]编辑您的代码(https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&uact=8&ved=0ahUKEwimx-ihn9fOAhWGWxQKHYyZDVsQFghNMAY&url=http%3A%2F% 2Fstackoverflow.com%2Fhelp%2Fmcve&usg = AFQjCNEkKReghNZHBJSaky_hwPskMmG0ww&sig2 = ryrpHSHDOO-4HSaxfTgj1w) – wasthishelpful
阅读智能指针。将为您节省很多麻烦。 – DumbCoder
为'main()'添加一个异常处理程序,不要调用'std :: terminate'调用'std :: exit'或者更好的是抛出一个异常*。 – Galik