我正在尝试编写一个类模板:
template<typename ObjType> class SharedBuffer: private boost::noncopyable
我正在使用 boost::mutex 来同步对缓冲区数据的访问:
private: boost::mutex myMonitor;
但是当我创建锁时,我得到一个奇怪的编译错误:
template<typename ObjType>
inline void SharedBuffer<ObjType>::clear(void){
boost::mutex::scoped_lock lk(myMonitor);
myBuffer.clear();
}
Error 9 error C2664:
'boost::unique_lock<Mutex>::unique_lock(boost::unique_lock<Mutex> &)' :
cannot convert parameter 1 from
'const boost::mutex' to 'boost::unique_lock<Mutex> &'
我不知道为什么会这样。我没有将 myMonitor 声明为常量。我正在使用 VS2010 并提升 1.4.9