在COM接口中怎样返回一个COM对象?
我使用VS2005的ATL开发的。现在YQCall接口类有一个方法CallOut,在idl中的声明如下:
IYQCallSession是另一个接口类,m_CallSessionList是我用来管理生成的IYQCallSession对象的,这些返回对象最后都是我用delete操作来释放的。。。
//idl中的声明
HRESULT CallOut([in] BSTR strNumber, [out,retval] IYQCallSession** pVal);
我的部分实现代码是这样的
STDMETHODIMP CYQCall::CallOut(YQ_CALL_TYPE nCallType, BSTR strNumber, IYQCallSession** pVal)
{
... ...
CComObject<CYQCallSession>* pCallSession = new CComObject<CYQCallSession>;
pCallSession->AddRef();
pCallSession->AddRef();
m_CallSessionList.Add(pCallSession);
*pVal = pCallSession;
... ...
}
至于为什么要加两个AddRef,我都没想明白,反正只有这样才不报错。我现在的代码在我用C++Builder写的测试程序里面一点问题都没有,运行地很正常,但是到VB下面就这样那样的问题,我很郁闷。。。希望给为帮我看看,关于返回对象这个地方是不是有问题,如果真的是我写的COM组件有问题,我所能想到的问题也就是这儿了