05/11/21 17:47:41
class FinallyCloseHandle {
private:
HANDLE h_;
public:
FinallyCloseHandle(HANDLE h) : h_(h)
{ if (h==INVALID_HANDLE_VALUE) throw; }
~FinallyCloseHandle() { CloseHandle(h_); }
};
というクラスを用意して
HANDLE file = CreateFile(...)
auto_ptr<FinallyCloseHandle> fch(new FinallyCloseHandle(file));
として、スコープを抜けるときに自動解放するようにしてるんですが、
これを汎用的に行う方法はないでしょうか
CloseHandle以外にも、いろいろ終了処理はありますが、
それに対して毎回似たようなクラスを作るのは、スマートとは思えません
atexitみたいな形で、スコープを抜けるときに呼び出す関数を
積んでおくことができると理想なのですが