小编use*_*250的帖子

boost :: mutex在模板中使用时不起作用

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

template<typename ObjType> class SharedBuffer: private boost::noncopyable
Run Code Online (Sandbox Code Playgroud)

我使用boost :: mutex来同步访问缓冲区数据:

private: boost::mutex myMonitor;
Run Code Online (Sandbox Code Playgroud)

但是当我创建锁时,我得到一个奇怪的编译错误:

template<typename ObjType>
inline void SharedBuffer<ObjType>::clear(void){
  boost::mutex::scoped_lock lk(myMonitor);
  myBuffer.clear();
}
Run Code Online (Sandbox Code Playgroud)
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> &'
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样.我没有将myMonitor声明为常量.我正在使用VS2010并提升1.4.9

c++ templates boost mutex

2
推荐指数
1
解决办法
1017
查看次数

标签 统计

boost ×1

c++ ×1

mutex ×1

templates ×1