首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CComPtr和RAII

CComPtr和RAII
EN

Stack Overflow用户
提问于 2013-08-19 20:38:44
回答 1查看 578关注 0票数 0

我使用CComPtr保存指向com对象的指针。

我还用一个类包装了资源:

代码语言:javascript
复制
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,我还需要创建一个包装器吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-19 20:45:09

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18314005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档