次のような ReadLock を実装しました。
私のmyClass.hで
#include <boost/thread/locks.hpp>
#include <boost/thread/shared_mutex.hpp>
typedef boost::shared_mutex Lock;
typedef boost::shared_lock< Lock > ReadLock;
Lock myLock;
myClass.cpp で:
void ReadFunction() const
{
ReadLock r_lock(myLock); // Error!
//Do reader stuff
}
コードは VS2010 で動作しますが、GCC4.0 では失敗しました。コンパイラは、一致する関数がないことを示す ReadLock でエラーをスローしています。変数 myLock の「const」の正確性の問題であると思われます。関数宣言の const を外したらエラーが消えました。誰か私にこれを説明できますか?これがWindowsでは機能するのにgccでは機能しないのはなぜですか?
ここに何か提案はありますか?ありがとう。