首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >COM智能指针如何重置为新实例?

COM智能指针如何重置为新实例?
EN

Stack Overflow用户
提问于 2012-05-04 22:41:20
回答 2查看 629关注 0票数 0

c++/boost用户都知道,我们可以轻松地将智能指针重置为新实例(同时销毁旧实例)。我想知道我们如何为COM智能指针做这件事?

_COM_SMARTPTR_TYPEDEF(IMyClass,__uuidof(IMyClass));

代码语言:javascript
运行
复制
//normal class A
class A{

  IMyClass m_spIMyClassObj; //this COM smart pointer is a member variable of a normal class
};

我用以下参数初始化COM智能指针:

代码语言:javascript
运行
复制
m_spIMyClassObj.CreateInstance(__uuidof(MyLib::IMyClass));

这很好,但是在A的生命周期中,我需要将COM智能指针m_spIMyClassObj重置为一个新的IMyClass实例,我该怎么做(同时确保旧的id被清除)。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-04 23:14:09

只需再次调用m_spIMyClassObj.CreateInstance(__uuidof(MyLib::IMyClass));即可。m_spIMyClassObj将被重新分配以指向新实例,而旧实例上的引用计数将减少1。如果原始对象上没有未完成的引用,它将自行销毁。

票数 5
EN

Stack Overflow用户

发布于 2012-05-04 22:52:26

只需调用Release,然后再次使用CreateInstance。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10451000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档