【发布时间】:2015-09-29 19:40:30
【问题描述】:
STL 或 boost 中是否有通用句柄类?我正在与一些具有分配、发布 api 的 C 代码交互。我想使用句柄来自动释放资源。
例如:
some_resource_type rsc;
int err = capi_alloc(&rsc);
if (err != NOERR) {
// .. do work with resource
capi_release(rsc);
}
我想要类似的东西
// looking for this class
class wrapper {
public:
wrapper(T obj, void (del)(T&)):obj(obj_),del_(del) {}
~wrapper() {_del(obj);}
T obj_;
void (del_)(T&);
};
some_resource_type rsc;
int err = capi_alloc(&rsc);
wrapper w;
if (err != NOERR) {
w = wrapper(rsc, &capi_release);
// .. do work with resource
}
// then auto release
在 STL 或 boost 中有类似的东西吗?它本质上是一些具有自定义创建和自定义删除的独特指针实现。
附:我还没有编译包装器代码,它可能不起作用。
【问题讨论】:
-
不久前有人问过这个问题。你还没有搜索过。
-
@LightnessRacesinOrbit 我花了 30 分钟研究。我可能没有使用正确的关键词。如果你知道在哪里,请发个链接,谢谢。