我已经实现了如下的 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 下无效?
这里有什么建议吗?谢谢。