shared_ptr - ccomptr 交换
我在这里有一个简单的问题
假设我们有一个使用 shared_ptr
/enable_shared_from_this
的代码库。
我们被要求将代码库的一部分转换为 COM 服务器,我们应该在其中使用 CComPtr
来代替,虽然这不是强制性要求......
现在是问题; atl/com+ 中是否有任何模仿 enable_shared_from_this
的功能?
I got a simple question here
Let's suppose we have a codebase that employs usage of shared_ptr
/enable_shared_from_this
.
And we have been asked to convert -a portion of- the codebase into a COM server where we are supposed to use CComPtr
instead, while it is not a mandatory requirement...
now here is the question;
Is there any functionality within the atl/com+ that mimics enable_shared_from_this
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 CComPtr 时不需要
enable_shared_from_this
,因为 CComPtr 不维护引用计数。相反,它指向的对象维护引用计数。 CComPtr 所做的只是调用对象上的成员函数来增加或减少引用计数。执行以下操作是没有问题的:There is no need for
enable_shared_from_this
when using CComPtr because CComPtr does not maintain a reference count. Instead, the object it points to maintains the reference count. All CComPtr does is call member functions on the object that increment or decrement the reference count. There is no problem with doing the following:COM对象有很多规则,并不像声明智能指针那么容易。我建议研究这个主题,这不是可以浓缩成简短答案的东西。
There are lots of rules for COM objects, it's not as easy as declaring a smart pointer. I'd suggest studying up on the subject, it's not something that can be condensed into a short answer.