我在这里得到一个简单的问题
我们假设我们的代码库使用了shared_ptr
/ enable_shared_from_this
。
我们被要求将代码库的一部分转换为COM服务器,而我们应该使用CComPtr
,而不是强制要求...
现在这是问题;
atl / com +中是否有模仿enable_shared_from_this
?
答案 0 :(得分:2)
使用CComPtr时不需要enable_shared_from_this
因为CComPtr不保持引用计数。相反,它指向的对象保持引用计数。所有CComPtr都在对象上调用成员函数,增加或减少引用计数。执行以下操作没有问题:
void Func(IUnknown* someObj)
{
CComPtr ptrA = someObj;
CComPtr ptrB = someObj;
}
答案 1 :(得分:0)
COM对象有很多规则,它并不像声明智能指针那么容易。我建议研究这个问题,这不是一个可以简化为简短答案的东西。