큰 문제가 있습니다. 예외를 던지거나 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