gpt4 book ai didi

c++ - CComPtr 和 RAII

转载 作者:行者123 更新时间:2023-11-28 03:11:36 31 4
gpt4 key购买 nike

我正在使用 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,是否还需要创建包装器?

最佳答案

不,不需要您的包装器,而且,像这样初始化和取消初始化 COM 是一个非常糟糕的主意。在应用程序启动和关闭时执行一次。

关于c++ - CComPtr 和 RAII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314005/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com