我正在使用 CComPtr 来保存指向 com 对象的指针。
我还用一个类包装了资源:
class ResourceWrapper {
public:
ResourceWrapper()
{
CoInitializeEx(NULL, COINIT_MULTITHREADED);
HRESULT hr = S_OK;
if (FAILED( hr = CoCreateInstance(CLSID_Resource, NULL, CLSCTX_INPROC, IID_PPV_ARGS(&pResource)))||pResource==NULL)
{
throw std::runtime_error("failed to create instance");
}
}
~ResourceWrapper()
{
pResource =NULL;
CoUninitialize();
}
CComPtr<IResource> Get()
{
return pResource;
}
private:
CComPtr<IResource> pResource;
ResourceWrapper(const ResourceWrapper&);
ResourceWrapper operator=(const ResourceWrapper&);
};
但后来我想也许 CComPtr 正在实现 RAII,然后我创建的 Wrapper 是不必要的。
我试图用谷歌搜索它,但我不明白我是否需要一个包装器。
所以我的问题是,如果我使用 CComPtr,我还需要创建一个包装器吗?