AddRefメソッドやReleaseメソッドを利用しますが、はっきり言うとboost::intrusive_ptrを使うほうが簡単です。
//Deleter.h
#pragma once
#include
#include
inline
void intrusive_ptr_add_ref(IUnknown* ptr) {
assert(ptr);
ptr->AddRef();
}
inline
void intrusive_ptr_release(IUnknown* ptr) {
assert(ptr);
ptr->Release();
}
クラスのメンバー変数に以下のようなものを用意しておけば boost::intrusive_ptrが自動で上げ下げ(intrusive_ptr_add_ref/intrusive_ptr_releaseを自動で呼び出してくれる)してくれるのでdeleteを使うときのマクロを書くことはしなくてもよくなります。