miyuriの日記: _com_ptr_t 2
日記 by
miyuri
CComPtrのつもりで使うとReleaseしていたりするから、取る前にAddRef。
atlcomcli.h
T** operator&() throw()
{
ATLASSERT(p==NULL);
return &p;
}
comip.h
Interface** operator&() throw()
{
_Release();
m_pInterface = NULL;
return &m_pInterface;
}
(´・ω・`)ふぁっきんしっと。
operator&はout引数を受け取る専用と思うのが吉 (スコア:0)
そういう使い方は気をつけたほうが良いと思います。ATLASSERTで表明されているように、ATL::CComPtrのoperator&はヌルポインタ状態のオブジェクトに対して使うことが想定されています。もしそれに従っていたなら、_com_ptr_tに単純に置き換えたとしても問題は起きなかったでしょう。
Re:operator&はout引数を受け取る専用と思うのが吉 (スコア:2)
ありがとう。
インタフェースへのポインタ型の変数を経由する方向で。
#D3Dの10と11が結構引っ掛かる