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