[英]Can't have Boost::mutex as private class member when using with std::deque?
[英]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.