私は大きな問題があります。私が例外をスローするか、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'を呼び出さないでください。 – Galik