资源管理类似于 std::unique_ptr,但针对标识符而不是指针

use*_*974 5 c++ unique-ptr

当包装在未定义结构上使用指针的类似 C 的 API 时,我通常使用std::unique_ptr自定义删除器来处理资源。

有时,C API 会赋予整数 ID,而不是指向资源的指针。我想知道处理这些问题的最佳做法是什么。我是否应该重写一个类似的类,只是std::unique_ptr为了处理 ID 而不是指针?我应该为这些 ID 动态分配内存以获得可以传递的指针吗std::unique_ptr?我应该将 ID 重新解释为指针吗?或者是否有(希望)更好的解决方案?

Joh*_*nck 6

虽然您可以(ab)使用 std::unique_ptr 来实现此目的,但编写自己的模板类似乎更清晰且非常简单。您可以决定删除器是类型的一部分(如 unique_ptr 中)还是构造函数参数(如 shared_ptr 中)。您可能还需要一些定制类,其中可以直接在句柄上执行有意义的操作(复制、索引等)。