【发布时间】:2010-05-15 22:46:50
【问题描述】:
假设我有一个看起来像这样的 autolocker 类:
template <T>
class autolocker {
public:
autolocker(T *l) : lock(l) {
lock->lock();
}
~autolocker() {
lock->unlock();
}
private:
autolocker(const autolocker&);
autolocker& operator=(const autolocker&);
private:
T *lock;
};
显然,目标是能够将此自动锁定器与任何具有锁定/解锁方法的东西一起使用,而无需借助虚拟功能。
目前,这样使用很简单:
autolocker<some_lock_t> lock(&my_lock); // my_lock is of type "some_lock_t"
但这样做是违法的:
autolocker lock(&my_lock); // this would be ideal
有没有办法让模板类型推导可以很好地使用这个(保存在我的自动锁柜中是不可复制的)。还是只指定类型最简单?
【问题讨论】:
-
我很好奇:
boost::mutex::scoped_lock有什么不合适或不受欢迎的原因吗? -
@greyfade:它用于我的玩具操作系统内核。所以我从头开始明智地使用图书馆:-)。
-
那么公平。祝你好运。 :)