簡體   English   中英

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

[英]boost::mutex don't work when using it in template

我正在嘗試編寫一個類模板:

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

問題出在哪里:

無法將參數1從' const boost :: mutex'轉換為'boost :: unique_lock&'

解決方法是:

私人: 可變的 boost :: mutex myMonitor;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM