2

我正在尝试编写一个类模板:

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

4

1 回答 1

6

问题是:

无法将参数 1 从“ const boost::mutex”转换为“boost::unique_lock &”

解决方案是:

私有的:可变的 boost::mutex myMonitor;

于 2012-05-18T12:53:49.147 回答