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 &' に変換できません

解決策は次のとおりです。

プライベート:変更可能なブースト::ミューテックス myMonitor ;

于 2012-05-18T12:53:49.147 に答える