DirectXのReleaseメソッド
DirectX関連のクラスには大抵Releaseメソッドなるものが存在していて、オブジェクトの破棄をする際に呼ばないといけないようです。
そこで処理を簡略化するためによくSAFE_RELEASEというような名前のマクロを用意すると便利らしいです。
#define SAFE_RELEASE(p) do { if(p){ (p)->Release(); (p) = NULL;} } while(0)
pが有効ならReleaseを呼んでNULLを代入するという感じですね。
ロベール本等でテンプレートで出来ることはマクロじゃなくてテンプレートでやるべきという話があったので今回はテンプレートで実装することにします。
template<class T> inline void safe_release (T& p) { if (p) { p->Release(); p = NULL; } }
マクロのように括弧で囲ったり、do〜whileしなくて良くなったりするので便利ですね。