在我的C++代码中,有时我需要从某些库调用C函数。有些时候这些是成对的功能,如锁定功能,然后是解锁功能。我想确保我不会忘记调用解锁功能。所以我正在尝试编写一个模板类来处理它,但我无法做到。如何选择函数指针类型?
template <class T>
class CInReleaser
{
public:
CInReleaser(T func) : _func(func) {}
~CInReleaser() { _func();}
T _func;
};
void somefunc()
{
DATA something;
// call locking function
lock_something(something);
CInReleaser<XXX> release(boost::bind(unlock_something,something));
.
.
}
当somefunc()函数结束时,函数unlock_something()应该被调用。但是我无法预测类型XXX。我怎样才能得到这个编译?在代码
template<typename T>
CInReleaser<T> makeReleaser(T func) {
return CInReleaser<T>(func);
}
再后来:
最好在构造函数中进行锁定并在析构函数中进行解锁。然后实例化一个单一的防护对象。 – juanchopanza
锁定不会总是在相同的范围内发生。但在构造函数中锁定并不能解决我的问题。 – Sharath
你到目前为止试过的是什么,而不是XXX?你收到了哪些错误信息? – TobiMcNamobi