SULT hr GetView(int nIndex, IView** ppView) { CComPtr spView = m_Views[nIndex]; if (FAILED( spView->IsVisable())) return E_FAILD; *ppView = spView.Detach(); //在智能指针出栈前,将其与接口指针分离。 return S_OK; } HRESULT hr GetView(int nIndex, IView** ppView) { CComPtr spView = m_Views[nIndex]; if (FAILED( spView->IsVisable())) return E_FAILD; *ppView = spView.Detach(); //在智能指针出栈前,将其与接口指针分离。 return S_OK; } 这或许是智能指针最让人苦恼的地方,他只是从一定程度上实现了引用计数的自动化。而却没有完完全全的解决这个问题。问题的根本在于,智能指针想实现引用计数的自动化,同时又需要兼容COM引用技术遗留下来的三条规则。对于这些潜在的问题,程序员或许只能小心翼翼了。
作者“liuchang5的专栏”
|