use*_*250 2 c++ templates 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
有问题:
无法将参数1从' const boost :: mutex'转换为'boost :: unique_lock&'
解决方案是:
private:mutable boost :: mutex myMonitor;
归档时间: |
|
查看次数: |
1017 次 |
最近记录: |