我使用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,然后我创建的包装器就没有必要了。
我试着用谷歌搜索它,但我不知道我是否需要一个包装器。
所以我的问题是,如果我使用CComPtr,我还需要创建一个包装器吗?
发布于 2013-08-19 20:45:09
不,不需要你的包装器,而且,像那样初始化和取消初始化COM是一个非常糟糕的想法。在应用程序启动和关闭时执行一次。
https://stackoverflow.com/questions/18314005
复制相似问题