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

Gob*_*0st 0 c++ com smart-pointers reset

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
};
Run Code Online (Sandbox Code Playgroud)

我初始化COM智能指针:

m_spIMyClassObj.CreateInstance(__uuidof(MyLib::IMyClass));
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Joh*_*ing 5

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