首页 > 解决方案 > 在智能指针中隐藏类型化类的特定方法

问题描述

我使用以下代码

template <typename T> std::shared_ptr<T> comToShared(T* comObject) {
    comObject->AddRef();
    return std::shared_ptr<T>(comObject, [=](auto) {
        comObject->Release();
    });
}

将 COM 对象转换为 shared_ptr,因为这更适合我的代码库的其余部分。问题是我仍然可以(偶尔会)调用内部指针AddRef()Release()导致过度释放/过度保留问题。

在这种情况下,有没有办法只隐藏这两种方法,以便使用它们会导致编译错误,同时让接口的其余部分保持可访问性?

标签: c++stlcomshared-ptriunknown

解决方案


推荐阅读