質問: CreateInstance( false ); cout << 2 << endl; }catch(int n){ cout << 3 << endl; delete obj; // ここで実行時エラー. cout << 4 << endl; } // 停止用 getchar();getchar(); return 0; } ``` [環境等] 言語: C/C++ 知りたいこと: FactoryMethodパターンで子クラスを生成するとき、コンストラクタから例外が投げられたときのオブジェクト破棄する方法 宜しくお願い致します。
回答: コンストラクタで例外を飛ばしたなら、インスタンスは生成されていません。 ですから、それをdeleteする必要はないししてはいけないです。ファクトリメソッドが生成失敗をどういう形で呼び出し元に伝えるかにもよりますが、catchしたら粛々と失敗情報を返却すればそれで十分です。