C++相談室 part72
■ このスレッドは過去ログ倉庫に格納されています
0090デフォルトの名無しさん
2009/09/05(土) 20:49:16HANDLE h = open(...);
OBJ *o = new OBJ(h);
return o;
上記の用に、OBJのコンストラクタに
ハンドルを渡す必要があるのだけど
エラー処理を追加すると、メモリ確保に失敗した場合
オープンして、すぐクローズする羽目になる。
HANDLE h = open(...);
try { OBJ *o = new OBJ(h); }
catch (std::bad_alloc& e) { close(h); throw error; }
処理の流れ的には、メモリ確保に成功したらオープンして〜
というほうが自然なのだけど、ハンドルを受け取る
コンストラクタしかないので出来ない。
さらにopen()やclose()も失敗する可能性があるので
その処理も追加すると、煩雑になってしまう。
なにかいい方法ありませんか?
■ このスレッドは過去ログ倉庫に格納されています