1,183
社区成员
发帖
与我相关
我的任务
分享
类声明
class CErrReporter : public IAMErrorLog
{
protected:
long m_lRef; // reference count
public:
CErrReporter() { m_lRef = 0; }
// IUnkown
STDMETHOD( QueryInterface( REFIID, void** ) );
STDMETHOD_(ULONG, AddRef() );
STDMETHOD_(ULONG, Release() );
// IAMErrorLog
STDMETHOD( LogError(...) );
}
部分实现
STDMETHOD CErrReporter::QueryInterface( REFIID riid, void **ppv )
{
if( ppv == NULL ) return E_POINTER;
*ppv = NULL;
if( riid == IID_IUnknown )
*ppv = static_cast<IUnknown*>(this);
else if( riid == IID_IAMErrorLog )
*ppv = static_cast<IAMErrorLog*>(this);
else
return E_NOINTERFACE;
AddRef();
return S_OK;
}
....