【发布时间】:2011-03-15 16:34:38
【问题描述】:
我有一个简单的问题
假设我们有一个使用shared_ptr/enable_shared_from_this的代码库。
我们被要求将代码库的一部分转换为 COM 服务器,我们应该在其中使用 CComPtr,虽然这不是强制性要求...
现在问题来了;
atl/com+ 中是否有任何模仿enable_shared_from_this 的功能?
【问题讨论】:
我有一个简单的问题
假设我们有一个使用shared_ptr/enable_shared_from_this的代码库。
我们被要求将代码库的一部分转换为 COM 服务器,我们应该在其中使用 CComPtr,虽然这不是强制性要求...
现在问题来了;
atl/com+ 中是否有任何模仿enable_shared_from_this 的功能?
【问题讨论】:
使用 CComPtr 时不需要enable_shared_from_this,因为 CComPtr 不维护引用计数。相反,它指向的对象维护引用计数。 CComPtr 所做的只是调用对象上的成员函数来增加或减少引用计数。执行以下操作没有问题:
void Func(IUnknown* someObj)
{
CComPtr ptrA = someObj;
CComPtr ptrB = someObj;
}
【讨论】:
COM 对象有很多规则,并不像声明一个智能指针那么简单。我建议研究一下这个主题,这不是可以浓缩成简短答案的东西。
【讨论】: