c++ - 在智能指针中隐藏类型化类的特定方法
问题描述
我使用以下代码
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()
导致过度释放/过度保留问题。
在这种情况下,有没有办法只隐藏这两种方法,以便使用它们会导致编译错误,同时让接口的其余部分保持可访问性?
解决方案
推荐阅读
- mysql - 如何使用不同的 WHERE 对 UPDATE 进行单个查询?
- excel - 遍历包含图表的工作表,将两个 ChartObjects 复制到另一个工作表中
- kubernetes - Skaffold 1.4.0:“由于同步错误而跳过部署:复制文件:”
- python - Python 读取 .bin 数据并转换为字符串
- sql - MS-Access 中的 LEFT JOIN 与多个匹配条件 (AND(OR)) 陷入困境
- php - PHP缓存 - 我错过了一些明显的东西吗?
- groovy - 将 Groovy 3 YamlBuilder 与包含连字符的 Yaml 一起使用
- javascript - JavaScript 日期中这种非一错误的来源是什么?
- angular - 使用 Route Resolver 时,Angular Universal 不会在视图源中加载我的组件
- javascript - Webpack:将 React 添加到 Flask,500 内部服务器错误