c++/boost用户都知道,我们可以轻松地将智能指针重置为新实例(同时销毁旧实例)。我想知道我们如何为COM智能指针做这件事?
_COM_SMARTPTR_TYPEDEF(IMyClass,__uuidof(IMyClass));
//normal class A
class A{
IMyClass m_spIMyClassObj; //this COM smart pointer is a member variable of a normal class
};我用以下参数初始化COM智能指针:
m_spIMyClassObj.CreateInstance(__uuidof(MyLib::IMyClass));这很好,但是在A的生命周期中,我需要将COM智能指针m_spIMyClassObj重置为一个新的IMyClass实例,我该怎么做(同时确保旧的id被清除)。
谢谢
发布于 2012-05-04 23:14:09
只需再次调用m_spIMyClassObj.CreateInstance(__uuidof(MyLib::IMyClass));即可。m_spIMyClassObj将被重新分配以指向新实例,而旧实例上的引用计数将减少1。如果原始对象上没有未完成的引用,它将自行销毁。
发布于 2012-05-04 22:52:26
只需调用Release,然后再次使用CreateInstance。
https://stackoverflow.com/questions/10451000
复制相似问题